mindoc/static/wangEditor/wangEditor.js.map

1 line
1.0 MiB
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{"version":3,"sources":["webpack://wangEditor/webpack/universalModuleDefinition","webpack://wangEditor/webpack/bootstrap","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js","webpack://wangEditor/./node_modules/tslib/tslib.es6.js","webpack://wangEditor/./src/utils/dom-core.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://wangEditor/./node_modules/core-js-pure/internals/export.js","webpack://wangEditor/./src/utils/util.ts","webpack://wangEditor/./src/utils/const.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/global.js","webpack://wangEditor/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://wangEditor/./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack://wangEditor/./node_modules/core-js-pure/internals/path.js","webpack://wangEditor/./node_modules/core-js-pure/internals/fails.js","webpack://wangEditor/./node_modules/core-js-pure/internals/is-object.js","webpack://wangEditor/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://wangEditor/./node_modules/core-js-pure/internals/descriptors.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js","webpack://wangEditor/./node_modules/core-js-pure/internals/has.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-define-property.js","webpack://wangEditor/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://wangEditor/./node_modules/core-js-pure/internals/an-object.js","webpack://wangEditor/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://wangEditor/./node_modules/css-loader/dist/runtime/api.js","webpack://wangEditor/./src/menus/menu-constructors/BtnMenu.ts","webpack://wangEditor/./src/menus/menu-constructors/DropListMenu.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/get-built-in.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-object.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-string.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-iteration.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack://wangEditor/./src/menus/menu-constructors/Panel.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/a-function.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-length.js","webpack://wangEditor/./src/menus/menu-constructors/PanelMenu.ts","webpack://wangEditor/./src/menus/menu-constructors/Tooltip.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack://wangEditor/./node_modules/core-js-pure/internals/is-pure.js","webpack://wangEditor/./node_modules/core-js-pure/internals/function-bind-context.js","webpack://wangEditor/./node_modules/core-js-pure/internals/iterate.js","webpack://wangEditor/./node_modules/core-js-pure/internals/iterators.js","webpack://wangEditor/./node_modules/core-js-pure/internals/internal-state.js","webpack://wangEditor/./node_modules/core-js-pure/internals/set-to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/modules/web.dom-collections.iterator.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js","webpack://wangEditor/./src/menus/list/utils.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/classof-raw.js","webpack://wangEditor/./node_modules/core-js-pure/internals/require-object-coercible.js","webpack://wangEditor/./node_modules/core-js-pure/internals/engine-user-agent.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-keys.js","webpack://wangEditor/./node_modules/core-js-pure/internals/hidden-keys.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.iterator.js","webpack://wangEditor/./node_modules/core-js-pure/internals/redefine.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.object.to-string.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.string.iterator.js","webpack://wangEditor/./node_modules/core-js-pure/internals/is-array.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-method-has-species-support.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","webpack://wangEditor/./src/menus/list/ListHandle/ListHandle.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-property-key.js","webpack://wangEditor/./node_modules/core-js-pure/internals/is-symbol.js","webpack://wangEditor/./node_modules/core-js-pure/internals/engine-v8-version.js","webpack://wangEditor/./node_modules/core-js-pure/internals/uid.js","webpack://wangEditor/./node_modules/core-js-pure/internals/shared-key.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-create.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-integer.js","webpack://wangEditor/./node_modules/core-js-pure/internals/classof.js","webpack://wangEditor/./node_modules/core-js-pure/internals/new-promise-capability.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-method-is-strict.js","webpack://wangEditor/./node_modules/core-js-pure/internals/whitespaces.js","webpack://wangEditor/./node_modules/core-js-pure/internals/create-property.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack://wangEditor/./node_modules/core-js-pure/internals/indexed-object.js","webpack://wangEditor/./node_modules/core-js-pure/internals/native-symbol.js","webpack://wangEditor/./node_modules/core-js-pure/internals/shared.js","webpack://wangEditor/./node_modules/core-js-pure/internals/shared-store.js","webpack://wangEditor/./node_modules/core-js-pure/internals/document-create-element.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-set-prototype-of.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-includes.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-absolute-index.js","webpack://wangEditor/./node_modules/core-js-pure/internals/enum-bug-keys.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack://wangEditor/./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack://wangEditor/./node_modules/core-js-pure/internals/define-iterator.js","webpack://wangEditor/./node_modules/core-js-pure/internals/an-instance.js","webpack://wangEditor/./node_modules/core-js-pure/internals/engine-is-node.js","webpack://wangEditor/./node_modules/core-js-pure/internals/perform.js","webpack://wangEditor/./src/editor/index.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/array-species-create.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","webpack://wangEditor/./node_modules/core-js-pure/internals/string-trim.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-get-own-property-names.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/helpers/typeof.js","webpack://wangEditor/./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.js","webpack://wangEditor/./src/menus/menu-constructors/Menu.ts","webpack://wangEditor/./src/menus/img/upload-img.ts","webpack://wangEditor/./src/menus/todo/util.ts","webpack://wangEditor/./src/utils/data-structure/cache.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack://wangEditor/./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack://wangEditor/./node_modules/core-js-pure/internals/is-forced.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-keys-internal.js","webpack://wangEditor/./node_modules/core-js-pure/internals/html.js","webpack://wangEditor/./node_modules/core-js-pure/internals/is-array-iterator-method.js","webpack://wangEditor/./node_modules/core-js-pure/internals/get-iterator-method.js","webpack://wangEditor/./node_modules/core-js-pure/internals/iterator-close.js","webpack://wangEditor/./node_modules/core-js-pure/internals/inspect-source.js","webpack://wangEditor/./node_modules/core-js-pure/internals/iterators-core.js","webpack://wangEditor/./node_modules/core-js-pure/internals/native-promise-constructor.js","webpack://wangEditor/./node_modules/core-js-pure/internals/redefine-all.js","webpack://wangEditor/./node_modules/core-js-pure/internals/set-species.js","webpack://wangEditor/./node_modules/core-js-pure/internals/check-correctness-of-iteration.js","webpack://wangEditor/./node_modules/core-js-pure/internals/species-constructor.js","webpack://wangEditor/./node_modules/core-js-pure/internals/task.js","webpack://wangEditor/./node_modules/core-js-pure/internals/engine-is-ios.js","webpack://wangEditor/./node_modules/core-js-pure/internals/promise-resolve.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/map.js","webpack://wangEditor/./node_modules/core-js-pure/internals/collection.js","webpack://wangEditor/./node_modules/core-js-pure/internals/internal-metadata.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-get-own-property-names-external.js","webpack://wangEditor/./node_modules/core-js-pure/internals/collection-strong.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.iterator.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","webpack://wangEditor/./src/config/style.ts","webpack://wangEditor/./src/config/text.ts","webpack://wangEditor/./src/text/paste/paste-event.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/set.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/some.js","webpack://wangEditor/./src/menus/menu-constructors/DropList.ts","webpack://wangEditor/./src/menus/link/is-active.ts","webpack://wangEditor/./src/editor/upload/upload-core.ts","webpack://wangEditor/./src/editor/upload/progress.ts","webpack://wangEditor/./src/menus/list/index.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js","webpack://wangEditor/./src/menus/code/is-active.ts","webpack://wangEditor/./src/menus/todo/todo.ts","webpack://wangEditor/./src/wangEditor.ts","webpack://wangEditor/./node_modules/core-js-pure/stable/object/define-property.js","webpack://wangEditor/./node_modules/core-js-pure/es/object/define-property.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.object.define-property.js","webpack://wangEditor/(webpack)/buildin/global.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-primitive.js","webpack://wangEditor/./node_modules/core-js-pure/internals/ordinary-to-primitive.js","webpack://wangEditor/./node_modules/core-js-pure/internals/set-global.js","webpack://wangEditor/./src/assets/style/common.less?4672","webpack://wangEditor/./src/assets/style/common.less","webpack://wangEditor/./src/assets/style/icon.less?c1d5","webpack://wangEditor/./src/assets/style/icon.less","webpack://wangEditor/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://wangEditor/./src/assets/font/w-e-icon.woff","webpack://wangEditor/./src/assets/style/menus.less?3c63","webpack://wangEditor/./src/assets/style/menus.less","webpack://wangEditor/./src/assets/style/text.less?71cc","webpack://wangEditor/./src/assets/style/text.less","webpack://wangEditor/./src/assets/style/panel.less?63fd","webpack://wangEditor/./src/assets/style/panel.less","webpack://wangEditor/./src/assets/style/droplist.less?4262","webpack://wangEditor/./src/assets/style/droplist.less","webpack://wangEditor/./src/utils/polyfill.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js","webpack://wangEditor/./node_modules/core-js-pure/stable/promise/index.js","webpack://wangEditor/./node_modules/core-js-pure/es/promise/index.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.aggregate-error.js","webpack://wangEditor/./node_modules/core-js-pure/internals/correct-prototype-getter.js","webpack://wangEditor/./node_modules/core-js-pure/internals/a-possible-prototype.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-define-properties.js","webpack://wangEditor/./node_modules/core-js-pure/internals/native-weak-map.js","webpack://wangEditor/./node_modules/core-js-pure/internals/create-iterator-constructor.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-to-string.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.promise.js","webpack://wangEditor/./node_modules/core-js-pure/internals/microtask.js","webpack://wangEditor/./node_modules/core-js-pure/internals/engine-is-ios-pebble.js","webpack://wangEditor/./node_modules/core-js-pure/internals/engine-is-webos-webkit.js","webpack://wangEditor/./node_modules/core-js-pure/internals/host-report-errors.js","webpack://wangEditor/./node_modules/core-js-pure/internals/engine-is-browser.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.promise.all-settled.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.promise.any.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.promise.finally.js","webpack://wangEditor/./node_modules/core-js-pure/internals/string-multibyte.js","webpack://wangEditor/./node_modules/core-js-pure/internals/dom-iterables.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/for-each.js","webpack://wangEditor/./node_modules/core-js-pure/stable/array/virtual/for-each.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/for-each.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.for-each.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-for-each.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-species-constructor.js","webpack://wangEditor/./node_modules/core-js-pure/stable/array/is-array.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/is-array.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.is-array.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/map.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/map.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/map.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.map.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/trim.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/trim.js","webpack://wangEditor/./node_modules/core-js-pure/es/string/virtual/trim.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.string.trim.js","webpack://wangEditor/./node_modules/core-js-pure/internals/string-trim-forced.js","webpack://wangEditor/./node_modules/core-js-pure/stable/map/index.js","webpack://wangEditor/./node_modules/core-js-pure/es/map/index.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.map.js","webpack://wangEditor/./node_modules/core-js-pure/internals/freezing.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/index-of.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/index-of.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/index-of.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.index-of.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/splice.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/splice.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/splice.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.splice.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/filter.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/filter.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/filter.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.filter.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/includes.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/includes.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/includes.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.includes.js","webpack://wangEditor/./node_modules/core-js-pure/es/string/virtual/includes.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.string.includes.js","webpack://wangEditor/./node_modules/core-js-pure/internals/not-a-regexp.js","webpack://wangEditor/./node_modules/core-js-pure/internals/is-regexp.js","webpack://wangEditor/./node_modules/core-js-pure/internals/correct-is-regexp-logic.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/bind.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/bind.js","webpack://wangEditor/./node_modules/core-js-pure/es/function/virtual/bind.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.function.bind.js","webpack://wangEditor/./node_modules/core-js-pure/internals/function-bind.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js/symbol.js","webpack://wangEditor/./node_modules/core-js-pure/features/symbol/index.js","webpack://wangEditor/./node_modules/core-js-pure/stable/symbol/index.js","webpack://wangEditor/./node_modules/core-js-pure/es/symbol/index.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.concat.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.async-iterator.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.description.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.has-instance.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.match.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.match-all.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.replace.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.search.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.species.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.split.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.to-primitive.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.unscopables.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.json.to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.math.to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.dispose.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.matcher.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.metadata.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.observable.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js","webpack://wangEditor/./node_modules/core-js-pure/features/symbol/iterator.js","webpack://wangEditor/./node_modules/core-js-pure/stable/symbol/iterator.js","webpack://wangEditor/./node_modules/core-js-pure/es/symbol/iterator.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/parse-int.js","webpack://wangEditor/./node_modules/core-js-pure/stable/parse-int.js","webpack://wangEditor/./node_modules/core-js-pure/es/parse-int.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.parse-int.js","webpack://wangEditor/./node_modules/core-js-pure/internals/number-parse-int.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/slice.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/slice.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/slice.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.slice.js","webpack://wangEditor/./node_modules/core-js-pure/stable/set-timeout.js","webpack://wangEditor/./node_modules/core-js-pure/modules/web.timers.js","webpack://wangEditor/./src/config/index.ts","webpack://wangEditor/./node_modules/core-js-pure/stable/object/assign.js","webpack://wangEditor/./node_modules/core-js-pure/es/object/assign.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.object.assign.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-assign.js","webpack://wangEditor/./src/config/menus.ts","webpack://wangEditor/./src/config/events.ts","webpack://wangEditor/./src/config/paste.ts","webpack://wangEditor/./src/config/cmd.ts","webpack://wangEditor/./src/config/image.ts","webpack://wangEditor/./src/config/lang.ts","webpack://wangEditor/./src/config/history.ts","webpack://wangEditor/./src/config/video.ts","webpack://wangEditor/./src/editor/selection.ts","webpack://wangEditor/./src/editor/command.ts","webpack://wangEditor/./src/text/index.ts","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/find.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/find.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/find.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.find.js","webpack://wangEditor/./src/text/event-hooks/index.ts","webpack://wangEditor/./src/text/event-hooks/enter-to-create-p.ts","webpack://wangEditor/./src/text/event-hooks/del-to-keep-p.ts","webpack://wangEditor/./src/text/event-hooks/tab-to-space.ts","webpack://wangEditor/./src/text/event-hooks/paste-text-html.ts","webpack://wangEditor/./src/text/paste/parse-html.ts","webpack://wangEditor/./src/text/paste/tags.ts","webpack://wangEditor/./node_modules/core-js-pure/stable/set/index.js","webpack://wangEditor/./node_modules/core-js-pure/es/set/index.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.set.js","webpack://wangEditor/./src/lib/simplehtmlparser.js","webpack://wangEditor/./src/text/event-hooks/img-click-active.ts","webpack://wangEditor/./src/text/getChildrenJSON.ts","webpack://wangEditor/./src/text/getHtmlByNodeList.ts","webpack://wangEditor/./src/menus/index.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack://wangEditor/./node_modules/core-js-pure/stable/object/keys.js","webpack://wangEditor/./node_modules/core-js-pure/es/object/keys.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.object.keys.js","webpack://wangEditor/./node_modules/core-js-pure/stable/object/entries.js","webpack://wangEditor/./node_modules/core-js-pure/es/object/entries.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.object.entries.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-to-array.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/some.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/some.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/some.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.some.js","webpack://wangEditor/./src/menus/menu-list.ts","webpack://wangEditor/./src/menus/bold/index.ts","webpack://wangEditor/./src/menus/head/index.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","webpack://wangEditor/./node_modules/core-js-pure/stable/json/stringify.js","webpack://wangEditor/./node_modules/core-js-pure/es/json/stringify.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.json.stringify.js","webpack://wangEditor/./src/menus/link/index.ts","webpack://wangEditor/./src/menus/link/create-panel-conf.ts","webpack://wangEditor/./src/menus/link/util.ts","webpack://wangEditor/./src/menus/link/bind-event/index.ts","webpack://wangEditor/./src/menus/link/bind-event/tooltip-event.ts","webpack://wangEditor/./src/menus/italic/index.ts","webpack://wangEditor/./src/menus/underline/index.ts","webpack://wangEditor/./src/menus/strike-through/index.ts","webpack://wangEditor/./src/menus/font-style/index.ts","webpack://wangEditor/./src/menus/font-style/FontStyleList.ts","webpack://wangEditor/./src/menus/font-size/index.ts","webpack://wangEditor/./src/menus/font-size/FontSizeList.ts","webpack://wangEditor/./src/menus/justify/index.ts","webpack://wangEditor/./src/menus/quote/index.ts","webpack://wangEditor/./src/menus/quote/bind-event/index.ts","webpack://wangEditor/./src/menus/quote/create-quote-node.ts","webpack://wangEditor/./src/menus/back-color/index.ts","webpack://wangEditor/./src/menus/font-color/index.ts","webpack://wangEditor/./src/menus/video/index.ts","webpack://wangEditor/./src/menus/video/create-panel-conf.ts","webpack://wangEditor/./src/menus/video/upload-video.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/date/now.js","webpack://wangEditor/./node_modules/core-js-pure/stable/date/now.js","webpack://wangEditor/./node_modules/core-js-pure/es/date/now.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.date.now.js","webpack://wangEditor/./src/menus/video/bind-event/index.ts","webpack://wangEditor/./src/menus/video/bind-event/tooltip-event.ts","webpack://wangEditor/./src/menus/video/bind-event/video-alignment.ts","webpack://wangEditor/./src/menus/video/bind-event/keyboard.ts","webpack://wangEditor/./src/menus/img/index.ts","webpack://wangEditor/./src/menus/img/bind-event/index.ts","webpack://wangEditor/./src/menus/img/bind-event/paste-img.ts","webpack://wangEditor/./src/menus/img/bind-event/drop-img.ts","webpack://wangEditor/./src/menus/img/bind-event/drag-size.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/parse-float.js","webpack://wangEditor/./node_modules/core-js-pure/stable/parse-float.js","webpack://wangEditor/./node_modules/core-js-pure/es/parse-float.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.parse-float.js","webpack://wangEditor/./node_modules/core-js-pure/internals/number-parse-float.js","webpack://wangEditor/./src/assets/style/drag-size.less?198e","webpack://wangEditor/./src/assets/style/drag-size.less","webpack://wangEditor/./src/menus/img/bind-event/tooltip-event.ts","webpack://wangEditor/./src/menus/img/bind-event/keyboard-event.ts","webpack://wangEditor/./src/menus/img/create-panel-conf.ts","webpack://wangEditor/./src/menus/indent/index.ts","webpack://wangEditor/./src/menus/indent/operate-element.ts","webpack://wangEditor/./src/menus/indent/increase-indent-style.ts","webpack://wangEditor/./src/menus/indent/decrease-indent-style.ts","webpack://wangEditor/./src/menus/emoticon/index.ts","webpack://wangEditor/./src/menus/emoticon/create-panel-conf.ts","webpack://wangEditor/./src/menus/list/ListHandle/index.ts","webpack://wangEditor/./src/menus/list/ListHandle/WrapListHandle.ts","webpack://wangEditor/./src/menus/list/SelectionRangeElem.ts","webpack://wangEditor/./src/menus/list/ListHandle/JoinListHandle.ts","webpack://wangEditor/./src/menus/list/ListHandle/StartJoinListHandle.ts","webpack://wangEditor/./src/menus/list/ListHandle/EndJoinListHandle.ts","webpack://wangEditor/./src/menus/list/ListHandle/OtherListHandle.ts","webpack://wangEditor/./src/menus/lineHeight/index.ts","webpack://wangEditor/./src/menus/lineHeight/lineHeightList.ts","webpack://wangEditor/./src/menus/undo/index.ts","webpack://wangEditor/./src/menus/redo/index.ts","webpack://wangEditor/./src/menus/table/index.ts","webpack://wangEditor/./src/menus/table/create-panel-conf.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/number/is-integer.js","webpack://wangEditor/./node_modules/core-js-pure/stable/number/is-integer.js","webpack://wangEditor/./node_modules/core-js-pure/es/number/is-integer.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.number.is-integer.js","webpack://wangEditor/./node_modules/core-js-pure/internals/is-integer.js","webpack://wangEditor/./src/assets/style/create-panel-conf.less?d818","webpack://wangEditor/./src/assets/style/create-panel-conf.less","webpack://wangEditor/./src/menus/table/create-table.ts","webpack://wangEditor/./src/menus/table/bind-event/index.ts","webpack://wangEditor/./src/menus/table/bind-event/tooltip-event.ts","webpack://wangEditor/./src/menus/table/bind-event/event/operating-event.ts","webpack://wangEditor/./node_modules/core-js-pure/stable/array/from.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/from.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.from.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-from.js","webpack://wangEditor/./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","webpack://wangEditor/./src/menus/table/bind-event/event/getNode.ts","webpack://wangEditor/./src/menus/table/bind-event/table-event.ts","webpack://wangEditor/./src/menus/code/index.ts","webpack://wangEditor/./src/menus/code/create-panel-conf.ts","webpack://wangEditor/./src/menus/code/bind-event/index.ts","webpack://wangEditor/./src/menus/code/bind-event/tooltip-event.ts","webpack://wangEditor/./src/menus/code/bind-event/jump-code-block-down.ts","webpack://wangEditor/./src/menus/split-line/index.ts","webpack://wangEditor/./src/menus/split-line/bind-event/index.ts","webpack://wangEditor/./src/menus/split-line/bind-event/tooltip-event.ts","webpack://wangEditor/./src/menus/todo/index.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js","webpack://wangEditor/./node_modules/core-js-pure/stable/instance/every.js","webpack://wangEditor/./node_modules/core-js-pure/es/instance/every.js","webpack://wangEditor/./node_modules/core-js-pure/es/array/virtual/every.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.every.js","webpack://wangEditor/./src/menus/todo/bind-event/index.ts","webpack://wangEditor/./src/editor/init-fns/init-dom.ts","webpack://wangEditor/./src/editor/init-fns/init-selection.ts","webpack://wangEditor/./src/editor/init-fns/bind-event.ts","webpack://wangEditor/./src/editor/init-fns/i18next-init.ts","webpack://wangEditor/./src/editor/init-fns/set-full-screen.ts","webpack://wangEditor/./src/assets/style/full-screen.less?b9eb","webpack://wangEditor/./src/assets/style/full-screen.less","webpack://wangEditor/./src/editor/init-fns/scroll-to-head.ts","webpack://wangEditor/./src/editor/z-index/index.ts","webpack://wangEditor/./src/editor/change/index.ts","webpack://wangEditor/./src/utils/observer/mutation.ts","webpack://wangEditor/./src/editor/history/index.ts","webpack://wangEditor/./src/editor/history/data/content.ts","webpack://wangEditor/./src/editor/history/data/node/index.ts","webpack://wangEditor/./src/utils/data-structure/stack.ts","webpack://wangEditor/./src/editor/history/data/node/compile.ts","webpack://wangEditor/./src/editor/history/data/node/decompilation.ts","webpack://wangEditor/./src/editor/history/data/html/index.ts","webpack://wangEditor/./src/utils/data-structure/chain.ts","webpack://wangEditor/./src/editor/history/data/scroll/index.ts","webpack://wangEditor/./src/editor/history/data/range/index.ts","webpack://wangEditor/./src/editor/disable/index.ts","webpack://wangEditor/./src/assets/style/disable.less?38a7","webpack://wangEditor/./src/assets/style/disable.less","webpack://wangEditor/./src/editor/selection-change/index.ts","webpack://wangEditor/./src/plugins/index.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;AClFA;AACA;AACA;AACA;AACA;;AAEA;AACA,6E;;;;;;ACPA,iBAAiB,mBAAO,CAAC,GAA4C,E;;;;;;;ACArE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,8EAA8E;AACvG;AACA;;AAEO;AACP;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEO;AACP;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEO;AACP,mCAAmC,oCAAoC;AACvE;;AAEO;AACP;AACA;;AAEO;AACP,2BAA2B,+DAA+D,gB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ACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,SAAI;;AAEnF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,qEAAqE,qBAAqB,aAAa;;AAEvG;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,yDAAyD;AACzD,GAAG;;AAEH;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,4BAA4B;AAC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;AACxE,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,kBAAkB,mBAAO,CAAC,EAA0B;;AAEpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC,KAAK;AACL;AACA;;;;;;;AClBA,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS,EAAE;AACzD,CAAC,gBAAgB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;;;;;;;ACrCA,eAAe,mBAAO,CAAC,EAAwB;AAC/C,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACZA,aAAa,mBAAO,CAAC,CAAqB;AAC1C,YAAY,mBAAO,CAAC,EAAoB;AACxC,WAAW,mBAAO,CAAC,EAAoC;AACvD,WAAW,mBAAO,CAAC,GAAmB;AACtC,oBAAoB,mBAAO,CAAC,EAAsC;AAClE,aAAa,mBAAO,CAAC,GAA4B;AACjD,cAAc,mBAAO,CAAC,EAA6B;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC,gBAAgB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA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AO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;;AAEA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,SAAS,WAAW,YAAY,oCAAoC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,kCAAkC;AAClC,oCAAoC;AACpC,cAAc;AACd,KAAK;;AAEL,SAAS,WAAW;AACpB;AACA;AACA;AACA;AACA;;;;;;;ACzMA;AACA;;;;;;;ACDA,4BAA4B,mBAAO,CAAC,EAAuC;;AAE3E;AACA;AACA;;;;;;;ACJA,iBAAiB,mBAAO,CAAC,GAAmC,E;;;;;;;;ACA5D;;;AAGG;;;;;;;;;AAEH,qBAAe;AACX,QAAM,EAAE;AADG,CAAf,C;;;;;;;;ACLA;;;AAGG;;;;;;;;;AAEH,qBAAe;AACX,OAAK,EAA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AO,CAAC,GAAmB;AACtC,gBAAgB,mBAAO,CAAC,GAAwB;AAChD,qBAAqB,mBAAO,CAAC,GAA8B;AAC3D,uBAAuB,mBAAO,CAAC,GAAiC;AAChE,iCAAiC,mBAAO,CAAC,EAAqC;AAC9E,cAAc,mBAAO,CAAC,EAAsB;AAC5C,0BAA0B,mBAAO,CAAC,EAA6B;AAC/D,eAAe,mBAAO,CAAC,GAAwB;AAC/C,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,iBAAiB,mBAAO,CAAC,GAAgC;AACzD,cAAc,mBAAO,CAAC,EAA6B;AACnD,iBAAiB,mBAAO,CAAC,EAAgC;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,YAAY,EAAE;AACzE;AACA,sBAAsB,cAAc,eAAe,cAAc;AACjE;AACA;AACA;AACA,0CAA0C,cAAc;AACxD;AACA;AACA;AACA,CAAC;;AAED;AACA,yDAAyD,cAAc;AACvE,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,cAAc;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO,GAAG,eAAe;;AAEzB;AACA,uFAAuF,eAAe;AACtG;;AAEA;AACA;AACA;AACA,KAAK,gBAAgB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,2CAA2C;AAC9C;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA,GAAG,8CAA8C;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,yDAAyD;AAC5D;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,2DAA2D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,CAAC;;;;;;;ACxYD,aAAa,mBAAO,CAAC,CAAqB;AAC1C,+BAA+B,mBAAO,CAAC,EAAiD;AACxF,gBAAgB,mBAAO,CAAC,GAAmB;AAC3C,aAAa,mBAAO,CAAC,GAA4B;AACjD,oBAAoB,mBAAO,CAAC,GAAmC;AAC/D,sBAAsB,mBAAO,CAAC,GAAqC;AACnE,cAAc,mBAAO,CAAC,EAA6B;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;AClFA,gBAAgB,mBAAO,CAAC,EAAgC;AACxD,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;;;;;;;ACHA,gBAAgB,mBAAO,CAAC,EAAgC;;AAExD;;;;;;;ACFA,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;;;;;;;;ACAa;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,iCAAiC,mBAAO,CAAC,EAAqC;AAC9E,cAAc,mBAAO,CAAC,EAAsB;AAC5C,cAAc,mBAAO,CAAC,EAAsB;;AAE5C;AACA;AACA,GAAG,gCAAgC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;AACT;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;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,iCAAiC,mBAAO,CAAC,EAA4C;AACrF,kCAAkC,mBAAO,CAAC,EAA6C;AACvF,eAAe,mBAAO,CAAC,EAAuB;AAC9C,aAAa,mBAAO,CAAC,EAAqB;AAC1C,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,UAAU,mBAAO,CAAC,EAAkB;AACpC,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,mCAAmC,mBAAO,CAAC,GAAwC;AACnF,4BAA4B,mBAAO,CAAC,EAAuC;AAC3E,qBAAqB,mBAAO,CAAC,EAAgC;AAC7D,0BAA0B,mBAAO,CAAC,EAA6B;AAC/D,eAAe,mBAAO,CAAC,EAA8B;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,sBAAsB,yCAAyC,WAAW,IAAI;AAC9E,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF;AACA,KAAK;AACL;AACA,mDAAmD,iDAAiD;AACpG,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,kCAAkC;AAChH;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;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","file":"wangEditor.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"wangEditor\"] = factory();\n\telse\n\t\troot[\"wangEditor\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 146);\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"core-js-pure/stable/object/define-property\");","/*! *****************************************************************************\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","/**\n * @description 封装 DOM 操作\n * @wangfupeng\n */\n\nimport Editor from '../editor/index'\nimport { toArray } from './util'\n\n// 记录元素基于上一个相对&绝对定位的位置信息\ntype OffsetDataType = {\n top: number\n left: number\n width: number\n height: number\n parent: Element | null\n}\n\n// 记录代理事件绑定\ntype listener = (e: Event) => void\ntype EventItem = {\n elem: HTMLElement\n selector: string\n fn: listener\n agentFn: listener\n}\nconst AGENT_EVENTS: EventItem[] = []\n\n/**\n * 根据 html 字符串创建 elem\n * @param {String} html html\n */\nfunction _createElemByHTML(html: string): HTMLElement[] {\n const div = document.createElement('div')\n div.innerHTML = html\n const elems = div.children\n return toArray(elems)\n}\n\n/**\n * 判断是否是 DOM List\n * @param selector DOM 元素或列表\n */\nfunction _isDOMList<T extends HTMLCollection | NodeList>(selector: unknown): selector is T {\n if (!selector) {\n return false\n }\n if (selector instanceof HTMLCollection || selector instanceof NodeList) {\n return true\n }\n return false\n}\n\n/**\n * 封装 querySelectorAll\n * @param selector css 选择器\n */\nfunction _querySelectorAll(selector: string): HTMLElement[] {\n const elems = document.querySelectorAll(selector)\n return toArray(elems)\n}\n\n/**\n * 封装 _styleArrTrim\n * @param styleArr css\n */\nfunction _styleArrTrim(style: string | string[]): string[] {\n let styleArr: string[] = []\n let resultArr: string[] = []\n\n if (!Array.isArray(style)) {\n // 有 style将 style 按照 `;` 拆分为数组\n styleArr = style.split(';')\n } else {\n styleArr = style\n }\n\n styleArr.forEach(item => {\n // 对每项样式,按照 : 拆分为 key 和 value\n let arr = item.split(':').map(i => {\n return i.trim()\n })\n if (arr.length === 2) {\n resultArr.push(arr[0] + ':' + arr[1])\n }\n })\n return resultArr\n}\n\nexport type DomElementSelector =\n | string\n | DomElement\n | Document\n | Node\n | NodeList\n | ChildNode\n | ChildNode[]\n | Element\n | HTMLElement\n | HTMLElement[]\n | HTMLCollection\n | EventTarget\n | null\n | undefined\n\n// 构造函数\nexport class DomElement<T extends DomElementSelector = DomElementSelector> {\n // 定义属性\n selector!: T\n length: number\n elems: HTMLElement[]\n dataSource: Map<string, any>\n prior?: DomElement // 通过 getNodeTop 获取顶级段落的时候,可以通过 prior 去回溯来源的子节点\n\n /**\n * 构造函数\n * @param selector 任一类型的选择器\n */\n constructor(selector: T) {\n // 初始化属性\n this.elems = []\n this.length = this.elems.length\n this.dataSource = new Map()\n\n if (!selector) {\n return\n }\n\n // 原本就是 DomElement 实例,则直接返回\n if (selector instanceof DomElement) {\n return selector as DomElement<T>\n }\n\n let selectorResult: HTMLElement[] = [] // 存储查询结果\n const nodeType = selector instanceof Node ? selector.nodeType : -1\n this.selector = selector\n\n if (nodeType === 1 || nodeType === 9) {\n selectorResult = [selector as HTMLElement]\n } else if (_isDOMList(selector)) {\n // DOM List\n selectorResult = toArray(selector)\n } else if (selector instanceof Array) {\n // Element 数组(其他数据类型,暂时忽略)\n selectorResult = selector as HTMLElement[]\n } else if (typeof selector === 'string') {\n // 字符串\n const tmpSelector = selector.replace('/\\n/mg', '').trim()\n if (tmpSelector.indexOf('<') === 0) {\n // 如 <div>\n selectorResult = _createElemByHTML(tmpSelector)\n } else {\n // 如 #id .class\n selectorResult = _querySelectorAll(tmpSelector)\n }\n }\n\n const length = selectorResult.length\n if (!length) {\n // 空数组\n return this\n }\n\n // 加入 DOM 节点\n let i = 0\n for (; i < length; i++) {\n this.elems.push(selectorResult[i])\n }\n this.length = length\n }\n\n /**\n * 获取元素 id\n */\n get id(): string {\n return this.elems[0].id\n }\n\n /**\n * 遍历所有元素,执行回调函数\n * @param fn 回调函数\n */\n forEach(fn: (ele: HTMLElement, index?: number) => boolean | unknown): DomElement {\n for (let i = 0; i < this.length; i++) {\n const elem = this.elems[i]\n const result = fn.call(elem, elem, i)\n if (result === false) {\n break\n }\n }\n return this\n }\n\n /**\n * 克隆元素\n * @param deep 是否深度克隆\n */\n clone(deep: boolean = false): DomElement {\n const cloneList: HTMLElement[] = []\n this.elems.forEach(elem => {\n cloneList.push(elem.cloneNode(!!deep) as HTMLElement)\n })\n return $(cloneList)\n }\n\n /**\n * 获取第几个元素\n * @param index index\n */\n get(index: number = 0): DomElement {\n const length = this.length\n if (index >= length) {\n index = index % length\n }\n return $(this.elems[index])\n }\n\n /**\n * 获取第一个元素\n */\n first(): DomElement {\n return this.get(0)\n }\n\n /**\n * 获取最后一个元素\n */\n last(): DomElement {\n const length = this.length\n return this.get(length - 1)\n }\n\n /**\n * 绑定事件\n * @param type 事件类型\n * @param selector DOM 选择器\n * @param fn 事件函数\n */\n on(type: string, fn: Function): DomElement\n on(type: string, selector: string, fn: Function): DomElement\n on(type: string, selector: string | Function, fn?: Function): DomElement {\n if (!type) return this\n\n // 没有 selector ,只有 type 和 fn\n if (typeof selector === 'function') {\n fn = selector\n selector = ''\n }\n\n return this.forEach(elem => {\n // 没有事件代理\n if (!selector) {\n // 无代理\n elem.addEventListener(type, fn as listener)\n return\n }\n\n // 有事件代理\n const agentFn: listener = function (e) {\n const target = e.target as HTMLElement\n if (target.matches(selector as string)) {\n ;(fn as listener).call(target, e)\n }\n }\n elem.addEventListener(type, agentFn)\n\n // 缓存代理事件\n AGENT_EVENTS.push({\n elem: elem,\n selector: selector as string,\n fn: fn as listener,\n agentFn,\n })\n })\n }\n\n /**\n * 解绑事件\n * @param type 事件类型\n * @param selector DOM 选择器\n * @param fn 事件函数\n */\n off(type: string, fn: Function): DomElement\n off(type: string, selector: string, fn: Function): DomElement\n off(type: string, selector: string | Function, fn?: Function): DomElement {\n if (!type) return this\n\n // 没有 selector ,只有 type 和 fn\n if (typeof selector === 'function') {\n fn = selector\n selector = ''\n }\n\n return this.forEach(function (elem: HTMLElement) {\n // 解绑事件代理\n if (selector) {\n let idx = -1\n for (let i = 0; i < AGENT_EVENTS.length; i++) {\n let item = AGENT_EVENTS[i]\n if (item.selector === selector && item.fn === fn && item.elem === elem) {\n idx = i\n break\n }\n }\n if (idx !== -1) {\n const { agentFn } = AGENT_EVENTS.splice(idx, 1)[0]\n elem.removeEventListener(type, agentFn)\n }\n } else {\n // @ts-ignore\n elem.removeEventListener(type, fn)\n }\n })\n }\n\n /**\n * 设置/获取 属性\n * @param key key\n * @param val value\n */\n attr(key: string): string\n attr(key: string, val: string): DomElement\n attr(key: string, val?: string): DomElement | string {\n if (val == null) {\n // 获取数据\n return this.elems[0].getAttribute(key) || ''\n }\n\n // 否则,设置属性\n return this.forEach(function (elem: HTMLElement) {\n elem.setAttribute(key, val)\n })\n }\n\n /**\n * 删除 属性\n * @param key key\n */\n removeAttr(key: string): void {\n this.forEach(function (elem: HTMLElement) {\n elem.removeAttribute(key)\n })\n }\n\n /**\n * 添加 css class\n * @param className css class\n */\n addClass(className?: string): DomElement {\n if (!className) {\n return this\n }\n\n return this.forEach(function (elem: HTMLElement) {\n if (elem.className) {\n // 当前有 class\n let arr: string[] = elem.className.split(/\\s/)\n arr = arr.filter(item => {\n return !!item.trim()\n })\n // 添加 class\n if (arr.indexOf(className) < 0) {\n arr.push(className)\n }\n // 修改 elem.class\n elem.className = arr.join(' ')\n } else {\n // 当前没有 class\n elem.className = className\n }\n })\n }\n\n /**\n * 添加 css class\n * @param className css class\n */\n removeClass(className?: string): DomElement {\n if (!className) {\n return this\n }\n return this.forEach(function (elem: HTMLElement) {\n if (!elem.className) {\n // 当前无 class\n return\n }\n\n let arr: string[] = elem.className.split(/\\s/)\n arr = arr.filter(item => {\n item = item.trim()\n // 删除 class\n if (!item || item === className) {\n return false\n }\n return true\n })\n // 修改 elem.class\n elem.className = arr.join(' ')\n })\n }\n\n /**\n * 是否有传入的 css class\n * @param className css class\n */\n hasClass(className?: string): boolean {\n if (!className) {\n return false\n }\n const elem = this.elems[0]\n if (!elem.className) {\n // 当前无 class\n return false\n }\n let arr: string[] = elem.className.split(/\\s/)\n return arr.includes(className) // 是否包含\n }\n\n /**\n * 修改 css\n * @param key css key\n * @param val css value\n */\n // css(key: string): string\n css(key: string, val?: string | number): DomElement {\n let currentStyle: string\n if (val == '') {\n currentStyle = ''\n } else {\n currentStyle = `${key}:${val};`\n }\n return this.forEach(elem => {\n const style = (elem.getAttribute('style') || '').trim()\n if (style) {\n // 有 style将 style 按照 `;` 拆分为数组\n let resultArr: string[] = _styleArrTrim(style)\n\n // 替换现有的 style\n resultArr = resultArr.map(item => {\n if (item.indexOf(key) === 0) {\n return currentStyle\n } else {\n return item\n }\n })\n // 新增 style\n if (currentStyle != '' && resultArr.indexOf(currentStyle) < 0) {\n resultArr.push(currentStyle)\n }\n\n // 去掉 空白\n if (currentStyle == '') {\n resultArr = _styleArrTrim(resultArr)\n }\n\n // 重新设置 style\n elem.setAttribute('style', resultArr.join('; '))\n } else {\n // 当前没有 style\n elem.setAttribute('style', currentStyle)\n }\n })\n }\n\n /**\n * 封装 getBoundingClientRect\n */\n getBoundingClientRect(): DOMRect {\n const elem = this.elems[0]\n return elem.getBoundingClientRect()\n }\n\n /**\n * 显示\n */\n show(): DomElement {\n return this.css('display', 'block')\n }\n\n /**\n * 隐藏\n */\n hide(): DomElement {\n return this.css('display', 'none')\n }\n\n /**\n * 获取子节点(只有 DOM 元素)\n */\n children(): DomElement | null {\n const elem = this.elems[0]\n if (!elem) {\n return null\n }\n\n return $(elem.children)\n }\n\n /**\n * 获取子节点(包括文本节点)\n */\n childNodes(): DomElement | null {\n const elem = this.elems[0]\n if (!elem) {\n return null\n }\n\n return $(elem.childNodes)\n }\n\n /**\n * 将子元素全部替换\n * @param $children 新的child节点\n */\n replaceChildAll($children: DomElement): void {\n const parent = this.getNode()\n const elem = this.elems[0]\n while (elem.hasChildNodes()) {\n parent.firstChild && elem.removeChild(parent.firstChild)\n }\n this.append($children)\n }\n\n /**\n * 增加子节点\n * @param $children 子节点\n */\n append($children: DomElement): DomElement {\n return this.forEach(elem => {\n $children.forEach(function (child: HTMLElement) {\n elem.appendChild(child)\n })\n })\n }\n\n /**\n * 移除当前节点\n */\n remove(): DomElement {\n return this.forEach(elem => {\n if (elem.remove) {\n elem.remove()\n } else {\n const parent = elem.parentElement\n parent && parent.removeChild(elem)\n }\n })\n }\n\n /**\n * 当前元素,是否包含某个子元素\n * @param $child 子元素\n */\n isContain($child: DomElement): boolean {\n const elem = this.elems[0]\n const child = $child.elems[0]\n return elem.contains(child)\n }\n\n /**\n * 获取当前元素 nodeName\n */\n getNodeName(): string {\n const elem = this.elems[0]\n return elem.nodeName\n }\n\n /**\n * 根据元素位置获取元素节点默认获取0位置的节点\n * @param n 元素节点位置\n */\n getNode(n: number = 0): Node {\n let elem: Node\n elem = this.elems[n]\n return elem\n }\n\n /**\n * 查询\n * @param selector css 选择器\n */\n find(selector: string): DomElement {\n const elem = this.elems[0]\n return $(elem.querySelectorAll(selector))\n }\n\n /**\n * 获取/设置 元素 text\n * @param val text 值\n */\n text(): string\n text(val: string): DomElement\n text(val?: string): DomElement | string {\n if (!val) {\n // 获取 text\n const elem = this.elems[0]\n\n return elem.innerHTML.replace(/<[^>]+>/g, () => '')\n } else {\n // 设置 text\n return this.forEach(function (elem: HTMLElement) {\n elem.innerHTML = val\n })\n }\n }\n\n /**\n * 设置/获取 元素 html\n * @param val html 值\n */\n html(): string\n html(val: string): DomElement\n html(val?: string): DomElement | string {\n const elem = this.elems[0]\n if (!val) {\n // 获取 html\n return elem.innerHTML\n } else {\n // 设置 html\n elem.innerHTML = val\n return this\n }\n }\n\n /**\n * 获取元素 value\n */\n val(): string {\n const elem = this.elems[0]\n return (elem as any).value.trim() // 暂用 any\n }\n\n /**\n * focus 到当前元素\n */\n focus(): DomElement {\n return this.forEach(elem => {\n elem.focus()\n })\n }\n\n /**\n * 当前元素前一个兄弟节点\n */\n prev(): DomElement {\n const elem = this.elems[0]\n return $(elem.previousElementSibling)\n }\n\n /**\n * 当前元素后一个兄弟节点\n * 不包括文本节点、注释节点)\n */\n next(): DomElement {\n const elem = this.elems[0]\n return $(elem.nextElementSibling)\n }\n\n /**\n * 获取当前节点的下一个兄弟节点\n * 包括文本节点、注释节点即回车、换行、空格、文本等等)\n */\n getNextSibling(): DomElement {\n const elem = this.elems[0]\n return $(elem.nextSibling)\n }\n\n /**\n * 获取父元素\n */\n parent(): DomElement {\n const elem = this.elems[0]\n return $(elem.parentElement)\n }\n\n /**\n * 查找父元素,直到满足 selector 条件\n * @param selector css 选择器\n * @param curElem 从哪个元素开始查找,默认为当前元素\n */\n parentUntil(selector: string, curElem?: HTMLElement): DomElement | null {\n const elem = curElem || this.elems[0]\n if (elem.nodeName === 'BODY') {\n return null\n }\n\n const parent = elem.parentElement\n if (parent === null) {\n return null\n }\n\n if (parent.matches(selector)) {\n // 找到,并返回\n return $(parent)\n }\n\n // 继续查找,递归\n return this.parentUntil(selector, parent)\n }\n\n /**\n * 查找父元素,直到满足 selector 条件,或者 到达 编辑区域容器以及菜单栏容器\n * @param selector css 选择器\n * @param curElem 从哪个元素开始查找,默认为当前元素\n */\n parentUntilEditor(selector: string, editor: Editor, curElem?: HTMLElement): DomElement | null {\n const elem = curElem || this.elems[0]\n if ($(elem).equal(editor.$textContainerElem) || $(elem).equal(editor.$toolbarElem)) {\n return null\n }\n\n const parent = elem.parentElement\n if (parent === null) {\n return null\n }\n\n if (parent.matches(selector)) {\n // 找到,并返回\n return $(parent)\n }\n\n // 继续查找,递归\n return this.parentUntilEditor(selector, editor, parent)\n }\n\n /**\n * 判读是否相等\n * @param $elem 元素\n */\n equal($elem: DomElement | HTMLElement): boolean {\n if ($elem instanceof DomElement) {\n return this.elems[0] === $elem.elems[0]\n } else if ($elem instanceof HTMLElement) {\n return this.elems[0] === $elem\n } else {\n return false\n }\n }\n\n /**\n * 将该元素插入到某个元素前面\n * @param selector css 选择器\n */\n insertBefore(selector: string | DomElement): DomElement {\n const $referenceNode = $(selector)\n const referenceNode = $referenceNode.elems[0]\n if (!referenceNode) {\n return this\n }\n return this.forEach(elem => {\n const parent = referenceNode.parentNode as Node\n parent?.insertBefore(elem, referenceNode)\n })\n }\n\n /**\n * 将该元素插入到selector元素后面\n * @param selector css 选择器\n */\n insertAfter(selector: string | DomElement): DomElement {\n const $referenceNode = $(selector)\n const referenceNode = $referenceNode.elems[0]\n const anchorNode = referenceNode && referenceNode.nextSibling\n if (!referenceNode) {\n return this\n }\n return this.forEach(function (elem: HTMLElement) {\n const parent = referenceNode.parentNode as Node\n if (anchorNode) {\n parent.insertBefore(elem, anchorNode)\n } else {\n parent.appendChild(elem)\n }\n })\n }\n\n /**\n * 设置/获取 数据\n * @param key key\n * @param value value\n */\n data<T>(key: string, value?: T): T | undefined {\n if (value != null) {\n // 设置数据\n this.dataSource.set(key, value)\n } else {\n // 获取数据\n return this.dataSource.get(key)\n }\n }\n\n /**\n * 获取当前节点的顶级(段落)\n * @param editor 富文本实例\n */\n getNodeTop(editor: Editor): DomElement {\n // 异常抛出,空的 DomElement 直接返回\n if (this.length < 1) {\n return this\n }\n\n // 获取父级元素,并判断是否是 编辑区域\n // 如果是则返回当前节点\n const $parent = this.parent()\n\n // fix添加当前元素与编辑区元素的比较防止传入的当前元素就是编辑区元素而造成的获取顶级元素为空的情况\n if (editor.$textElem.equal(this) || editor.$textElem.equal($parent)) {\n return this\n }\n\n // 到了此处,即代表当前节点不是顶级段落\n // 将当前节点存放于父节点的 prior 字段下\n // 主要用于 回溯 子节点\n // 例如ul ol 等标签\n // 实际操作的节点是 li 但是一个 ul ol 的子节点可能有多个\n // 所以需要对其进行 回溯 找到对应的子节点\n $parent.prior = this\n return $parent.getNodeTop(editor)\n }\n\n /**\n * 获取当前 节点 基与上一个拥有相对或者解决定位的父容器的位置\n * @param editor 富文本实例\n */\n getOffsetData(): OffsetDataType {\n const $node = this.elems[0]\n return {\n top: $node.offsetTop,\n left: $node.offsetLeft,\n width: $node.offsetWidth,\n height: $node.offsetHeight,\n parent: $node.offsetParent,\n }\n }\n\n /**\n * 从上至下进行滚动\n * @param top 滚动的值\n */\n scrollTop(top: number): void {\n const $node = this.elems[0]\n $node.scrollTo({ top })\n }\n}\n\n// new 一个对象\nfunction $(...arg: ConstructorParameters<typeof DomElement>): DomElement {\n return new DomElement(...arg)\n}\n\nexport default $\n","module.exports = require(\"core-js-pure/stable/instance/for-each\");","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof NativeConstructor) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return NativeConstructor.apply(this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && has(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty === typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && typeof sourceProperty == 'function') resultProperty = bind(Function.call, sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n target[key] = resultProperty;\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!has(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n path[VIRTUAL_PROTOTYPE][key] = sourceProperty;\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","/**\n * @description 工具函数集合\n * @author wangfupeng\n */\n\nclass NavUA {\n public _ua: string\n\n // 是否为旧版 Edge\n public isOldEdge: boolean\n\n // 是否为 Firefox\n public isFirefox: boolean\n\n constructor() {\n this._ua = navigator.userAgent\n\n const math = this._ua.match(/(Edge?)\\/(\\d+)/)\n this.isOldEdge = math && math[1] == 'Edge' && parseInt(math[2]) < 19 ? true : false\n\n this.isFirefox =\n /Firefox\\/\\d+/.test(this._ua) && !/Seamonkey\\/\\d+/.test(this._ua) ? true : false\n }\n\n // 是否为 IE\n public isIE() {\n return 'ActiveXObject' in window\n }\n\n // 是否为 webkit\n public isWebkit() {\n return /webkit/i.test(this._ua)\n }\n}\n\n// 和 UA 相关的属性\nexport const UA = new NavUA()\n\n/**\n * 获取随机字符\n * @param prefix 前缀\n */\nexport function getRandom(prefix: string = ''): string {\n return prefix + Math.random().toString().slice(2)\n}\n\n/**\n * 替换 html 特殊字符\n * @param html html 字符串\n */\nexport function replaceHtmlSymbol(html: string) {\n return html\n .replace(/</gm, '&lt;')\n .replace(/>/gm, '&gt;')\n .replace(/\"/gm, '&quot;')\n .replace(/(\\r\\n|\\r|\\n)/g, '<br/>')\n}\n\nexport function replaceSpecialSymbol(value: string) {\n return value\n .replace(/&lt;/gm, '<')\n .replace(/&gt;/gm, '>')\n .replace(/&quot;/gm, '\"')\n}\n\ninterface Obj {\n [key: string]: unknown\n [key: number]: unknown\n}\ninterface ArrObj {\n length: number\n [key: number]: unknown\n}\n\n/**\n * 遍历对象或数组,执行回调函数\n * @param obj 对象或数组\n * @param fn 回调函数 (key, val) => {...}\n */\nexport function forEach<T extends ArrObj, V = T[Extract<keyof T, number>]>(\n obj: T,\n fn: (key: string, value: V) => boolean | void\n): void\nexport function forEach<T extends Obj>(\n obj: T,\n fn: (key: string, value: T[Extract<keyof T, string | number>]) => boolean | void\n): void\nexport function forEach<T extends unknown[]>(\n obj: T,\n fn: (key: string, value: T[Extract<keyof T, number>]) => boolean | void\n): void\nexport function forEach<T extends unknown[] | Obj | ArrObj>(\n obj: T,\n fn: (\n key: string,\n value: T[Extract<keyof T, number>] | T[Extract<keyof T, string>]\n ) => boolean | void\n): void {\n for (let key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const result = fn(key, obj[key])\n if (result === false) {\n // 提前终止循环\n break\n }\n }\n }\n}\n\n/**\n * 遍历类数组\n * @param fakeArr 类数组\n * @param fn 回调函数\n */\nexport function arrForEach<T extends { length: number; [key: number]: unknown }>(\n fakeArr: T,\n fn: (this: T, item: T[number], index: number) => boolean | unknown\n): void {\n let i, item, result\n const length = fakeArr.length || 0\n for (i = 0; i < length; i++) {\n item = fakeArr[i]\n result = fn.call(fakeArr, item, i)\n if (result === false) {\n break\n }\n }\n}\n\n/**\n * 节流\n * @param fn 函数\n * @param interval 间隔时间,毫秒\n */\n\nexport function throttle<C, T extends unknown[]>(\n fn: (this: C, ...args: T) => unknown,\n interval: number = 200\n) {\n let flag = false\n return function (this: C, ...args: T): void {\n if (!flag) {\n flag = true\n setTimeout(() => {\n flag = false\n fn.call(this, ...args) // this 报语法错误,先用 null\n }, interval)\n }\n }\n}\n\n/**\n * 防抖\n * @param fn 函数\n * @param delay 间隔时间,毫秒\n */\nexport function debounce<C, T extends unknown[]>(\n fn: (this: C, ...args: T) => void,\n delay: number = 200\n): (this: C, ...args: T) => void {\n let lastFn = 0\n return function (...args: T) {\n if (lastFn) {\n window.clearTimeout(lastFn)\n }\n lastFn = window.setTimeout(() => {\n lastFn = 0\n fn.call(this, ...args) // this 报语法错误,先用 null\n }, delay)\n }\n}\n\n/**\n * isFunction 是否是函数\n * @param fn 函数\n */\nexport function isFunction(fn: any): fn is Function {\n return typeof fn === 'function'\n}\n\n/**\n * 引用与非引用值 深拷贝方法\n * @param data\n */\nexport function deepClone<T>(data: T): T {\n if (typeof data !== 'object' || typeof data == 'function' || data === null) {\n return data\n }\n\n let item: any\n if (Array.isArray(data)) {\n item = []\n }\n\n if (!Array.isArray(data)) {\n item = {}\n }\n\n for (let i in data) {\n if (Object.prototype.hasOwnProperty.call(data, i)) {\n item[i] = deepClone(data[i])\n }\n }\n\n return item\n}\n\n/**\n * 将可遍历的对象转换为数组\n * @param data 可遍历的对象\n */\nexport function toArray<T>(data: T) {\n return Array.prototype.slice.call(data)\n}\n\n/**\n * 唯一id生成\n * @param length 随机数长度\n */\nexport function getRandomCode() {\n return Math.random().toString(36).slice(-5)\n}\n\n/**\n * hex color 转换成 rgb\n * @param hex string\n */\nexport function hexToRgb(hex: string) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\n if (result == null) return null\n\n const colors = result.map(i => parseInt(i, 16))\n const r = colors[1]\n const g = colors[2]\n const b = colors[3]\n\n return `rgb(${r}, ${g}, ${b})`\n}\n","/**\n * @description 常量\n * @author wangfupeng\n */\n\nexport function EMPTY_FN() {}\n\n//用于校验是否为url格式字符串\nexport const urlRegex = /^(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-.,@?^=%&amp;:/~+#]*[\\w\\-@?^=%&amp;/~+#])?/\n\n// 编辑器为了方便继续输入/换行等原因 主动生成的空标签\nexport const EMPTY_P = '<p data-we-empty-p=\"\"><br></p>'\n\n// 用于校验dom中最后 由编辑器主动生成的空标签结构\nexport const EMPTY_P_LAST_REGEX = /<p data-we-empty-p=\"\"><br\\/?><\\/p>$/gim\n\n// 用于校验dom中所有 由编辑器主动生成的空标签结构\nexport const EMPTY_P_REGEX = /<p data-we-empty-p=\"\">/gim\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","module.exports = {};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","module.exports = require(\"core-js-pure/stable/instance/trim\");","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}","/**\n * @description 按钮菜单 Class\n * @author wangfupeng\n */\n\nimport { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport Menu from './Menu'\n\nclass BtnMenu extends Menu {\n constructor($elem: DomElement, editor: Editor) {\n super($elem, editor)\n }\n}\n\nexport default BtnMenu\n","/**\n * @description 下拉菜单 Class\n * @author wangfupeng\n */\n\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport Menu from './Menu'\nimport DropList, { DropListConf } from './DropList'\n\nclass DropListMenu extends Menu {\n public dropList: DropList\n\n constructor($elem: DomElement, editor: Editor, conf: DropListConf) {\n super($elem, editor)\n\n // 国际化\n conf.title = editor.i18next.t(`menus.dropListMenu.${conf.title}`)\n\n // 非中文模式下 带 icon 的下拉列表居左\n const className: string = editor.config.lang === 'zh-CN' ? '' : 'w-e-drop-list-tl'\n if (className !== '' && conf.type === 'list') {\n conf.list.forEach(item => {\n const $elem = item.$elem\n const $children = $($elem.children())\n if ($children.length > 0) {\n const nodeName = $children?.getNodeName()\n if (nodeName && nodeName === 'I') {\n $elem.addClass(className)\n }\n }\n })\n }\n\n // 初始化 dropList\n const dropList = new DropList(this, conf)\n this.dropList = dropList\n\n // 绑定事件\n $elem\n .on('click', () => {\n if (editor.selection.getRange() == null) {\n return\n }\n $elem.css('z-index', editor.zIndex.get('menu'))\n // 触发 droplist 悬浮事件\n editor.txt.eventHooks.dropListMenuHoverEvents.forEach(fn => fn())\n // 显示\n dropList.show()\n })\n .on('mouseleave', () => {\n $elem.css('z-index', 'auto')\n // 隐藏\n dropList.hideTimeoutId = window.setTimeout(() => {\n dropList.hide()\n })\n })\n }\n}\n\nexport default DropListMenu\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","module.exports = require(\"core-js-pure/stable/instance/map\");","module.exports = require(\"core-js-pure/stable/instance/index-of\");","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var isSymbol = require('../internals/is-symbol');\n\nmodule.exports = function (argument) {\n if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","module.exports = require(\"core-js-pure/stable/instance/find\");","/**\n * @description panel class\n * @author wangfupeng\n */\n\nimport $, { DomElement } from '../../utils/dom-core'\nimport PanelMenu from './PanelMenu'\nimport { EMPTY_FN } from '../../utils/const'\n\n// Panel 配置格式\nexport type TabEventConf = {\n selector: string\n type: string\n fn: Function\n bindEnter?: Boolean\n}\nexport type PanelTabConf = {\n title: string\n tpl: string\n events: TabEventConf[]\n}\nexport type PanelConf = {\n width: number | 0\n height: number | 0\n tabs: PanelTabConf[]\n}\n\nclass Panel {\n // 记录已经创建过的 panelMenu\n static createdMenus: Set<PanelMenu> = new Set()\n\n private menu: PanelMenu\n private conf: PanelConf\n public $container: DomElement\n\n constructor(menu: PanelMenu, conf: PanelConf) {\n this.menu = menu\n this.conf = conf\n this.$container = $('<div class=\"w-e-panel-container\"></div>')\n\n // 隐藏 panel\n const editor = menu.editor\n editor.txt.eventHooks.clickEvents.push(Panel.hideCurAllPanels)\n editor.txt.eventHooks.toolbarClickEvents.push(Panel.hideCurAllPanels)\n editor.txt.eventHooks.dropListMenuHoverEvents.push(Panel.hideCurAllPanels)\n }\n\n /**\n * 创建并展示 panel\n */\n public create(): void {\n const menu = this.menu\n if (Panel.createdMenus.has(menu)) {\n // 创建过了\n return\n }\n\n const conf = this.conf\n\n // panel 的容器\n const $container = this.$container\n const width = conf.width || 300 // 默认 300px\n const rect = menu.editor.$toolbarElem.getBoundingClientRect()\n const menuRect = menu.$elem.getBoundingClientRect()\n const top = rect.height + rect.top - menuRect.top\n let left = (rect.width - width) / 2 + rect.left - menuRect.left\n const offset = 300 // icon与panel菜单距离偏移量暂定 300\n if (Math.abs(left) > offset) {\n // panel菜单离工具栏icon过远时让panel菜单出现在icon正下方处理边界逻辑\n if (menuRect.left < document.documentElement.clientWidth / 2) {\n // icon在左侧\n left = -menuRect.width / 2\n } else {\n // icon在右侧\n left = -width + menuRect.width / 2\n }\n }\n\n $container\n .css('width', width + 'px')\n .css('margin-top', `${top}px`)\n .css('margin-left', `${left}px`)\n .css('z-index', menu.editor.zIndex.get('panel'))\n\n // 添加关闭按钮\n const $closeBtn = $('<i class=\"w-e-icon-close w-e-panel-close\"></i>')\n $container.append($closeBtn)\n $closeBtn.on('click', () => {\n this.remove()\n })\n\n // 准备 tabs 容器\n const $tabTitleContainer = $('<ul class=\"w-e-panel-tab-title\"></ul>')\n const $tabContentContainer = $('<div class=\"w-e-panel-tab-content\"></div>')\n $container.append($tabTitleContainer).append($tabContentContainer)\n\n // 设置高度\n const height = conf.height // height: 0 即不用设置\n if (height) {\n $tabContentContainer.css('height', height + 'px').css('overflow-y', 'auto')\n }\n\n // tabs\n const tabs = conf.tabs || []\n const tabTitleArr: DomElement[] = []\n const tabContentArr: DomElement[] = []\n\n tabs.forEach((tab: PanelTabConf, tabIndex: number) => {\n if (!tab) {\n return\n }\n const title = tab.title || ''\n const tpl = tab.tpl || ''\n\n // 添加到 DOM\n const $title = $(`<li class=\"w-e-item\">${title}</li>`)\n $tabTitleContainer.append($title)\n const $content = $(tpl)\n $tabContentContainer.append($content)\n\n // 记录到内存\n tabTitleArr.push($title)\n tabContentArr.push($content)\n\n // 设置 active 项\n if (tabIndex === 0) {\n $title.data('active', true)\n $title.addClass('w-e-active')\n } else {\n $content.hide()\n }\n\n // 绑定 tab 的事件\n $title.on('click', () => {\n if ($title.data('active')) {\n return\n }\n // 隐藏所有的 tab\n tabTitleArr.forEach($title => {\n $title.data('active', false)\n $title.removeClass('w-e-active')\n })\n tabContentArr.forEach($content => {\n $content.hide()\n })\n\n // 显示当前的 tab\n $title.data('active', true)\n $title.addClass('w-e-active')\n $content.show()\n })\n })\n\n // 绑定关闭事件\n $container.on('click', (e: Event) => {\n // 点击时阻止冒泡\n e.stopPropagation()\n })\n\n // 添加到 DOM\n menu.$elem.append($container)\n\n // 绑定 conf events 的事件,只有添加到 DOM 之后才能绑定成功\n tabs.forEach((tab: PanelTabConf, index: number) => {\n if (!tab) {\n return\n }\n const events = tab.events || []\n events.forEach((event: TabEventConf) => {\n const selector = event.selector\n const type = event.type\n const fn = event.fn || EMPTY_FN\n const $content = tabContentArr[index]\n const bindEnter = event.bindEnter ?? false\n\n const doneFn = async (e: Event) => {\n e.stopPropagation()\n const needToHide = await fn(e)\n // 执行完事件之后,是否要关闭 panel\n if (needToHide) {\n this.remove()\n }\n }\n // 给按钮绑定相应的事件\n $content.find(selector).on(type, doneFn)\n // 绑定enter键入事件\n if (bindEnter && type === 'click') {\n $content.on('keyup', (e: KeyboardEvent) => {\n if (e.keyCode == 13) {\n doneFn(e)\n }\n })\n }\n })\n })\n\n // focus 第一个 elem\n let $inputs = $container.find('input[type=text],textarea')\n if ($inputs.length) {\n $inputs.get(0).focus()\n }\n\n // 隐藏其他 panel\n Panel.hideCurAllPanels()\n\n // 记录该 menu 已经创建了 panel\n menu.setPanel(this)\n Panel.createdMenus.add(menu)\n }\n\n /**\n * 移除 penal\n */\n public remove(): void {\n const menu = this.menu\n const $container = this.$container\n if ($container) {\n $container.remove()\n }\n\n // 将该 menu 记录中移除\n Panel.createdMenus.delete(menu)\n }\n\n /**\n * 隐藏当前所有的 panel\n */\n static hideCurAllPanels(): void {\n if (Panel.createdMenus.size === 0) {\n return\n }\n Panel.createdMenus.forEach(menu => {\n const panel = (menu as PanelMenu).panel\n panel && panel.remove()\n })\n }\n}\n\nexport default Panel\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","/**\n * @description Modal 菜单 Class\n * @author wangfupeng\n */\n\nimport { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport Menu from './Menu'\nimport Panel from './Panel'\n\nclass PanelMenu extends Menu {\n public panel: Panel | undefined\n\n constructor($elem: DomElement, editor: Editor) {\n super($elem, editor)\n }\n\n /**\n * 给 menu 设置 panel\n * @param panel panel 实例\n */\n public setPanel(panel: Panel): void {\n this.panel = panel\n }\n}\n\nexport default PanelMenu\n","/**\n * @description Tooltip class\n * @author wangfupeng\n */\n\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\n\ntype PositionDataType = {\n top: number\n left: number\n}\n\nexport type TooltipConfItemType = {\n $elem: DomElement\n onClick: Function\n}\nexport type TooltipConfType = Array<TooltipConfItemType>\n\nclass Tooltip {\n private $container: DomElement\n private $targetElem: DomElement\n private editor: Editor\n private conf: TooltipConfType\n private _show: boolean\n private _isInsertTextContainer: boolean\n\n constructor(editor: Editor, $elem: DomElement, conf: TooltipConfType) {\n this.editor = editor\n this.$targetElem = $elem\n this.conf = conf\n this._show = false\n this._isInsertTextContainer = false\n // 定义 container\n const $container = $('<div></div>')\n $container.addClass('w-e-tooltip')\n this.$container = $container\n }\n\n /**\n * 获取 tooltip 定位\n */\n private getPositionData(): PositionDataType {\n const $container = this.$container\n\n let top = 0\n let left = 0\n\n // tooltip 的高度\n const tooltipHeight = 20\n // 网页的 scrollTop\n const pageScrollTop = document.documentElement.scrollTop\n // 目标元素的 rect\n const targetElemRect = this.$targetElem.getBoundingClientRect()\n // 编辑区域的 rect\n const textElemRect = this.editor.$textElem.getBoundingClientRect()\n // 获取基于 textContainerElem 的 位置信息\n const targetOffset = this.$targetElem.getOffsetData()\n const targetParentElem = $(targetOffset.parent)\n // 获取 编辑区域的滚动条信息\n const scrollTop = this.editor.$textElem.elems[0].scrollTop\n // 是否插入 textContainer 中\n this._isInsertTextContainer = targetParentElem.equal(this.editor.$textContainerElem)\n\n if (this._isInsertTextContainer) {\n // 父容器的高度\n const targetParentElemHeight = targetParentElem.getBoundingClientRect().height\n // 相对于父容器的位置信息\n const { top: offsetTop, left: offsetLeft, height: offsetHeight } = targetOffset\n // 元素基于父容器的 绝对top信息\n const absoluteTop = offsetTop - scrollTop\n if (absoluteTop > tooltipHeight + 5) {\n // 说明模板元素的顶部空间足够\n top = absoluteTop - tooltipHeight - 15\n $container.addClass('w-e-tooltip-up')\n } else if (absoluteTop + offsetHeight + tooltipHeight < targetParentElemHeight) {\n // 说明模板元素的底部空间足够\n top = absoluteTop + offsetHeight + 10\n $container.addClass('w-e-tooltip-down')\n } else {\n // 其他情况tooltip 放在目标元素左上角\n top = (absoluteTop > 0 ? absoluteTop : 0) + tooltipHeight + 10\n $container.addClass('w-e-tooltip-down')\n }\n // 计算 left\n if (offsetLeft < 0) {\n left = 0\n } else {\n left = offsetLeft\n }\n } else {\n if (targetElemRect.top < tooltipHeight) {\n // 说明目标元素的顶部因滑动隐藏在浏览器上方。tooltip 要放在目标元素下面\n top = targetElemRect.bottom + pageScrollTop + 5 // 5px 间距\n $container.addClass('w-e-tooltip-down')\n } else if (targetElemRect.top - textElemRect.top < tooltipHeight) {\n // 说明目标元素的顶部因滑动隐藏在编辑区域上方。tooltip 要放在目标元素下面\n top = targetElemRect.bottom + pageScrollTop + 5 // 5px 间距\n $container.addClass('w-e-tooltip-down')\n } else {\n // 其他情况tooltip 放在目标元素上方\n top = targetElemRect.top + pageScrollTop - tooltipHeight - 15 // 减去 toolbar 的高度,还有 15px 间距\n $container.addClass('w-e-tooltip-up')\n }\n // 计算 left\n if (targetElemRect.left < 0) {\n left = 0\n } else {\n left = targetElemRect.left\n }\n }\n\n // 返回结果\n return { top, left }\n }\n\n /**\n * 添加 tooltip 菜单\n */\n private appendMenus(): void {\n const conf = this.conf\n const editor = this.editor\n const $targetElem = this.$targetElem\n const $container = this.$container\n\n conf.forEach((item: TooltipConfItemType, index: number) => {\n // 添加元素\n const $elem = item.$elem\n const $wrapper = $('<div></div>')\n $wrapper.addClass('w-e-tooltip-item-wrapper ')\n $wrapper.append($elem)\n $container.append($wrapper)\n\n // 绑定点击事件\n $elem.on('click', (e: Event) => {\n e.preventDefault()\n const res = item.onClick(editor, $targetElem)\n if (res) this.remove()\n })\n })\n }\n\n /**\n * 创建 tooltip\n */\n public create(): void {\n const editor = this.editor\n const $container = this.$container\n\n // 生成 container 的内容\n this.appendMenus()\n\n // 设置定位\n const { top, left } = this.getPositionData()\n $container.css('top', `${top}px`)\n $container.css('left', `${left}px`)\n\n // 设置 z-index\n $container.css('z-index', editor.zIndex.get('tooltip'))\n\n // 添加到 DOM\n if (this._isInsertTextContainer) {\n this.editor.$textContainerElem.append($container)\n } else {\n $('body').append($container)\n }\n\n this._show = true\n\n editor.beforeDestroy(this.remove.bind(this))\n editor.txt.eventHooks.onBlurEvents.push(this.remove.bind(this))\n }\n\n /**\n * 移除该 tooltip\n */\n public remove(): void {\n this.$container.remove()\n this._show = false\n }\n\n /**\n * 是否显示\n */\n public get isShow(): boolean {\n return this._show\n }\n}\n\nexport default Tooltip\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = true;\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var anObject = require('../internals/an-object');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && result instanceof Result) return result;\n } return new Result(false);\n }\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n if (typeof result == 'object' && result && result instanceof Result) return result;\n } return new Result(false);\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!has(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","require('./es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n","module.exports = require(\"core-js-pure/stable/instance/includes\");","module.exports = require(\"core-js-pure/stable/instance/slice\");","module.exports = require(\"core-js-pure/stable/set-timeout\");","import { ListType } from '.'\nimport Editor from '../../editor/index'\nimport $, { DomElement } from '../../utils/dom-core'\nimport { ContainerFragment } from './ListHandle'\n\n/**\n * 过滤 选择的 node 节点\n * @returns { DomElement[] } DomElement[]\n */\nexport function filterSelectionNodes($nodes: DomElement[]): DomElement[] {\n const $listHtml: DomElement[] = []\n $nodes.forEach(($node: DomElement) => {\n const targerName = $node.getNodeName()\n if (targerName !== ListType.OrderedList && targerName !== ListType.UnorderedList) {\n // 非序列\n $listHtml.push($node)\n } else {\n // 序列\n if ($node.prior) {\n $listHtml.push($node.prior)\n } else {\n const $children = $node.children()\n $children?.forEach(($li: HTMLElement) => {\n $listHtml.push($($li))\n })\n }\n }\n })\n\n return $listHtml\n}\n\n/**\n * 更新选区\n * @param $node\n */\n\nexport function updateRange(editor: Editor, $node: DomElement, collapsed: boolean) {\n const selection = editor.selection\n const range = document.createRange()\n\n // ===============================\n // length 大于 1\n // 代表着转换是一个文档节点多段落\n // ===============================\n if ($node.length > 1) {\n range.setStart($node.elems[0], 0)\n range.setEnd($node.elems[$node.length - 1], $node.elems[$node.length - 1].childNodes.length)\n }\n\n // ===============================\n // 序列节点 或 单段落\n // ===============================\n else {\n range.selectNodeContents($node.elems[0])\n }\n\n // ===============================\n // collapsed 为 true 代表是光标\n // ===============================\n collapsed && range.collapse(false)\n selection.saveRange(range)\n selection.restoreSelection()\n}\n\n/**\n * 获取起点元素\n * @param $startElem 开始序列节点\n */\nexport function getStartPoint($startElem: DomElement): DomElement {\n return $startElem.prior\n ? $startElem.prior // 有 prior 代表不是全选序列\n : $($startElem.children()?.elems[0]) // 没有则代表全选序列\n}\n\n/**\n * 获取结束元素\n * @param $endElem 结束序列节点\n */\nexport function getEndPoint($endElem: DomElement): DomElement {\n return $endElem.prior\n ? $endElem.prior // 有 prior 代表不是全选序列\n : $($endElem.children()?.last().elems[0]) // 没有则代表全选序列\n}\n\n/**\n * 在您指定节点的已有子节点之前插入新的子节点。\n * @param { DomElement } $node 指定节点\n * @param { ContainerFragment } newNode 插入的新子节点\n * @param { Node | null } existingNode 指定子节点\n */\nexport function insertBefore(\n $node: DomElement,\n newNode: ContainerFragment,\n existingNode: Node | null = null\n) {\n $node.parent().elems[0].insertBefore(newNode, existingNode)\n}\n\n/**\n * 创建指定的 element 对象\n */\nexport function createElement(target: string): HTMLElement {\n return document.createElement(target)\n}\n\n/**\n * 创建文档片段\n */\nexport function createDocumentFragment(): DocumentFragment {\n return document.createDocumentFragment()\n}\n\n/**\n * 生成 li 标签的元素,并返回 $fragment 文档片段\n * @param { DomElement[] } $nodes 需要转换成 li 的 dom 元素数组\n * @param { ContainerFragment } $fragment 用于存储生成后 li 元素的文档片段\n */\nexport function createElementFragment(\n $nodes: DomElement[],\n $fragment: ContainerFragment,\n tag: string = 'li'\n): ContainerFragment {\n $nodes.forEach(($node: DomElement) => {\n const $list = createElement(tag)\n $list.innerHTML = $node.html()\n $fragment.appendChild($list)\n $node.remove()\n })\n return $fragment\n}\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","module.exports = {};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n};\n","// empty\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","module.exports = require(\"core-js-pure/stable/instance/bind\");","import Editor from '../../../editor'\nimport { DomElement } from '../../../utils/dom-core'\nimport SelectionRangeElem from '../SelectionRangeElem'\n\nexport type HandlerListOptions = {\n editor: Editor\n listType: string\n listTarget: string\n $selectionElem: DomElement\n $startElem: DomElement\n $endElem: DomElement\n}\n\nexport interface Exec {\n exec: Function\n}\n\nexport class ListHandle {\n public options: HandlerListOptions\n public selectionRangeElem: SelectionRangeElem\n\n constructor(options: HandlerListOptions) {\n this.options = options\n this.selectionRangeElem = new SelectionRangeElem()\n }\n}\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : String(key);\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return typeof $Symbol == 'function' && Object(it) instanceof $Symbol;\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar aFunction = require('../internals/a-function');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","module.exports = require(\"core-js-pure/stable/instance/filter\");","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.16.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","module.exports = function () { /* empty */ };\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","module.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","/**\n * @description 编辑器 class\n * @author wangfupeng\n */\n\nimport $, { DomElement, DomElementSelector } from '../utils/dom-core'\nimport { deepClone } from '../utils/util'\nimport defaultConfig, { ConfigType } from '../config'\nimport SelectionAndRangeAPI from './selection'\nimport CommandAPI from './command'\nimport Text from '../text/index'\nimport Menus from '../menus/index'\nimport initDom, { selectorValidator } from './init-fns/init-dom'\nimport initSelection from './init-fns/init-selection'\nimport bindEvent from './init-fns/bind-event'\nimport i18nextInit from './init-fns/i18next-init'\nimport initFullScreen, { setUnFullScreen, setFullScreen } from './init-fns/set-full-screen'\nimport scrollToHead from './init-fns/scroll-to-head'\nimport ZIndex from './z-index'\nimport Change from './change/index'\nimport History from './history/index'\nimport disableInit from './disable'\nimport SelectionChange from './selection-change'\n\nimport initPlugins, { RegisterOptions, pluginsListType, registerPlugin } from '../plugins'\n\n// 创建菜单的 class\nimport { MenuListType } from '../menus/menu-list'\nimport BtnMenu from '../menus/menu-constructors/BtnMenu'\nimport DropList from '../menus/menu-constructors/DropList'\nimport DropListMenu from '../menus/menu-constructors/DropListMenu'\nimport Panel from '../menus/menu-constructors/Panel'\nimport PanelMenu from '../menus/menu-constructors/PanelMenu'\nimport Tooltip from '../menus/menu-constructors/Tooltip'\n\nlet EDITOR_ID = 1\n\nclass Editor {\n // 暴露 $\n static $ = $\n\n static BtnMenu = BtnMenu\n static DropList = DropList\n static DropListMenu = DropListMenu\n static Panel = Panel\n static PanelMenu = PanelMenu\n static Tooltip = Tooltip\n static globalCustomMenuConstructorList: MenuListType = {}\n static globalPluginsFunctionList: pluginsListType = {}\n public pluginsFunctionList: pluginsListType = {}\n\n public id: string\n public toolbarSelector: DomElementSelector\n public textSelector?: DomElementSelector\n public config: ConfigType\n public $toolbarElem: DomElement\n public $textContainerElem: DomElement\n public $textElem: DomElement\n public toolbarElemId: string\n public textElemId: string\n public isFocus: boolean\n public isComposing: boolean\n public isCompatibleMode: boolean\n public selection: SelectionAndRangeAPI\n public cmd: CommandAPI\n public txt: Text\n public menus: Menus\n public i18next: any\n public highlight: any\n public zIndex: ZIndex\n public change: Change\n public history: History\n public isEnable: Boolean\n public onSelectionChange: SelectionChange\n\n // 实例销毁前需要执行的钩子集合\n private beforeDestroyHooks: Function[] = []\n\n /** 禁用api */\n public disable: Function\n\n /** 启用api */\n public enable: Function\n\n /**\n * 构造函数\n * @param toolbarSelector 工具栏 DOM selector\n * @param textSelector 文本区域 DOM selector\n */\n constructor(toolbarSelector: DomElementSelector, textSelector?: DomElementSelector) {\n // id用以区分单个页面不同的编辑器对象\n this.id = `wangEditor-${EDITOR_ID++}`\n\n this.toolbarSelector = toolbarSelector\n this.textSelector = textSelector\n\n selectorValidator(this)\n\n // 属性的默认值,后面可能会再修改\n // 默认配置 - 当一个页面有多个编辑器的时候,因为 JS 的特性(引用类型)会导致多个编辑器的 config 引用是同一个,所以需要 深度克隆 断掉引用\n this.config = deepClone(defaultConfig)\n this.$toolbarElem = $('<div></div>')\n this.$textContainerElem = $('<div></div>')\n this.$textElem = $('<div></div>')\n this.toolbarElemId = ''\n this.textElemId = ''\n this.isFocus = false\n this.isComposing = false\n this.isCompatibleMode = false\n\n this.selection = new SelectionAndRangeAPI(this)\n this.cmd = new CommandAPI(this)\n this.txt = new Text(this)\n this.menus = new Menus(this)\n this.zIndex = new ZIndex()\n this.change = new Change(this)\n this.history = new History(this)\n this.onSelectionChange = new SelectionChange(this)\n\n const { disable, enable } = disableInit(this)\n this.disable = disable\n this.enable = enable\n this.isEnable = true\n }\n\n /**\n * 初始化选区\n * @param newLine 新建一行\n */\n public initSelection(newLine?: boolean): void {\n initSelection(this, newLine)\n }\n\n /**\n * 创建编辑器实例\n */\n public create(): void {\n // 初始化 ZIndex\n this.zIndex.init(this)\n\n // 确定当前的历史记录模式\n this.isCompatibleMode = this.config.compatibleMode()\n\n // 标准模式下,重置延迟时间\n if (!this.isCompatibleMode) {\n this.config.onchangeTimeout = 30\n }\n\n // 国际化 因为要在创建菜单前使用 所以要最先 初始化\n i18nextInit(this)\n\n // 初始化 DOM\n initDom(this)\n\n // 初始化 text\n this.txt.init()\n\n // 初始化菜单\n this.menus.init()\n\n // 初始化全屏功能\n initFullScreen(this)\n\n // 初始化选区,将光标定位到内容尾部\n this.initSelection(true)\n\n // 绑定事件\n bindEvent(this)\n\n // 绑定监听的目标节点\n this.change.observe()\n\n this.history.observe()\n\n // 初始化插件\n initPlugins(this)\n }\n\n /**\n * 提供给用户添加销毁前的钩子函数\n * @param fn 钩子函数\n */\n public beforeDestroy(fn: Function): Editor {\n this.beforeDestroyHooks.push(fn)\n return this\n }\n\n /**\n * 销毁当前编辑器实例\n */\n public destroy(): void {\n // 调用钩子函数\n this.beforeDestroyHooks.forEach(fn => fn.call(this))\n // 销毁 DOM 节点\n this.$toolbarElem.remove()\n this.$textContainerElem.remove()\n }\n\n /**\n * 将编辑器设置为全屏\n */\n public fullScreen(): void {\n setFullScreen(this)\n }\n\n /**\n * 将编辑器退出全屏\n */\n public unFullScreen(): void {\n setUnFullScreen(this)\n }\n\n /**\n * 滚动到指定标题锚点\n * @param id 标题锚点id\n */\n public scrollToHead(id: string): void {\n scrollToHead(this, id)\n }\n\n /**\n * 自定义添加菜单\n * @param key 菜单 key\n * @param Menu 菜单构造函数\n */\n static registerMenu(key: string, Menu: any) {\n if (!Menu || typeof Menu !== 'function') return\n Editor.globalCustomMenuConstructorList[key] = Menu\n }\n\n /**\n * 自定义添加插件\n * @param { string } name 插件的名称\n * @param { RegisterOptions } options 插件的选项\n */\n public registerPlugin(name: string, options: RegisterOptions) {\n registerPlugin(name, options, this.pluginsFunctionList)\n }\n\n /**\n * 自定义添加插件\n * @param { string } name 插件的名称\n * @param { RegisterOptions } options 插件的选项\n */\n static registerPlugin(name: string, options: RegisterOptions) {\n registerPlugin(name, options, Editor.globalPluginsFunctionList)\n }\n}\n\nexport default Editor\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","module.exports = require(\"core-js-pure/stable/array/is-array\");","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","module.exports = require(\"core-js-pure/stable/instance/splice\");","var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _Symbol$iterator = require(\"@babel/runtime-corejs3/core-js/symbol/iterator\");\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","module.exports = require(\"core-js-pure/stable/object/entries\");","/**\n * @description Menu class 父类\n * @author wangfupeng\n */\n\nimport { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport Panel from './Panel'\n\nexport interface MenuActive {\n /**\n * 修改菜单激活状态,菜单是否高亮\n */\n tryChangeActive(): void\n}\n\nclass Menu {\n public key: string | undefined\n public $elem: DomElement\n public editor: Editor\n private _active: boolean // 菜单是否处于激活状态如选中一段加粗文字时bold 菜单要被激活(即高亮显示)\n\n constructor($elem: DomElement, editor: Editor) {\n this.$elem = $elem\n this.editor = editor\n this._active = false\n\n // 绑定菜单点击事件\n $elem.on('click', (e: Event) => {\n Panel.hideCurAllPanels() // 隐藏当前的所有 Panel\n\n // 触发菜单点击的钩子\n editor.txt.eventHooks.menuClickEvents.forEach(fn => fn())\n\n e.stopPropagation()\n if (editor.selection.getRange() == null) {\n return\n }\n this.clickHandler(e)\n })\n }\n\n /**\n * 菜单点击事件,子类可重写\n * @param e event\n */\n protected clickHandler(e: Event): void {}\n\n /**\n * 激活菜单,高亮显示\n */\n protected active(): void {\n this._active = true\n this.$elem.addClass('w-e-active')\n }\n\n /**\n * 取消激活,不再高亮显示\n */\n protected unActive(): void {\n this._active = false\n this.$elem.removeClass('w-e-active')\n }\n\n /**\n * 是否处于激活状态\n */\n public get isActive() {\n return this._active\n }\n}\n\nexport default Menu\n","/**\n * @description 上传图片\n * @author wangfupeng\n */\n\nimport Editor from '../../editor/index'\nimport { arrForEach, forEach } from '../../utils/util'\nimport post from '../../editor/upload/upload-core'\nimport Progress from '../../editor/upload/progress'\n\ntype ResImgItemType = string | { url: string; alt?: string; href?: string }\n\nexport type ResType = {\n errno: number | string\n data: ResImgItemType[]\n}\n\nclass UploadImg {\n private editor: Editor\n\n constructor(editor: Editor) {\n this.editor = editor\n }\n\n /**\n * 往编辑区域插入图片\n * @param src 图片地址\n */\n public insertImg(src: string, alt?: string, href?: string): void {\n const editor = this.editor\n const config = editor.config\n\n const i18nPrefix = 'validate.'\n const t = (text: string, prefix: string = i18nPrefix): string => {\n return editor.i18next.t(prefix + text)\n }\n\n // 设置图片alt\n const altText = alt ? `alt=\"${alt}\" ` : ''\n const hrefText = href ? `data-href=\"${encodeURIComponent(href)}\" ` : ''\n // 先插入图片,无论是否能成功\n editor.cmd.do(\n 'insertHTML',\n `<img src=\"${src}\" ${altText}${hrefText}style=\"max-width:100%;\" contenteditable=\"false\"/>`\n )\n // 执行回调函数\n config.linkImgCallback(src, alt, href)\n\n // 加载图片\n let img: any = document.createElement('img')\n img.onload = () => {\n img = null\n }\n img.onerror = () => {\n config.customAlert(\n t('插入图片错误'),\n 'error',\n `wangEditor: ${t('插入图片错误')}${t('图片链接')} \"${src}\"${t('下载链接失败')}`\n )\n img = null\n }\n img.onabort = () => (img = null)\n img.src = src\n }\n\n /**\n * 上传图片\n * @param files 文件列表\n */\n public uploadImg(files: FileList | File[]): void {\n if (!files.length) {\n return\n }\n\n const editor = this.editor\n const config = editor.config\n\n // ------------------------------ i18next ------------------------------\n\n const i18nPrefix = 'validate.'\n const t = (text: string): string => {\n return editor.i18next.t(i18nPrefix + text)\n }\n\n // ------------------------------ 获取配置信息 ------------------------------\n\n // 服务端地址\n let uploadImgServer = config.uploadImgServer\n // base64 格式\n const uploadImgShowBase64 = config.uploadImgShowBase64\n // 图片最大体积\n const maxSize = config.uploadImgMaxSize\n const maxSizeM = maxSize / 1024 / 1024\n // 一次最多上传图片数量\n const maxLength = config.uploadImgMaxLength\n // 自定义 fileName\n const uploadFileName = config.uploadFileName\n // 自定义参数\n const uploadImgParams = config.uploadImgParams\n // 参数拼接到 url 中\n const uploadImgParamsWithUrl = config.uploadImgParamsWithUrl\n // 自定义 header\n const uploadImgHeaders = config.uploadImgHeaders\n // 钩子函数\n const hooks = config.uploadImgHooks\n // 上传图片超时时间\n const timeout = config.uploadImgTimeout\n // 跨域带 cookie\n const withCredentials = config.withCredentials\n // 自定义上传图片\n const customUploadImg = config.customUploadImg\n\n if (!customUploadImg) {\n // 没有 customUploadImg 的情况下,需要如下两个配置才能继续进行图片上传\n if (!uploadImgServer && !uploadImgShowBase64) {\n return\n }\n }\n\n // ------------------------------ 验证文件信息 ------------------------------\n const resultFiles: File[] = []\n const errInfos: string[] = []\n arrForEach(files, file => {\n // chrome 低版本 粘贴一张图时files为 [null, File]\n if (!file) return\n\n const name = file.name || file.type.replace('/', '.') // 兼容低版本chrome 没有name\n const size = file.size\n\n // chrome 低版本 name === undefined\n if (!name || !size) {\n return\n }\n\n // 将uploadImgAccept数组转换为正则对象\n const imgType = editor.config.uploadImgAccept.join('|')\n const imgTypeRuleStr = `.(${imgType})$`\n const uploadImgAcceptRule = new RegExp(imgTypeRuleStr, 'i')\n if (uploadImgAcceptRule.test(name) === false) {\n // 后缀名不合法,不是图片\n errInfos.push(`【${name}】${t('不是图片')}`)\n return\n }\n\n if (maxSize < size) {\n // 上传图片过大\n errInfos.push(`【${name}】${t('大于')} ${maxSizeM}M`)\n return\n }\n\n // 验证通过的加入结果列表\n resultFiles.push(file)\n })\n // 抛出验证信息\n if (errInfos.length) {\n config.customAlert(`${t('图片验证未通过')}: \\n` + errInfos.join('\\n'), 'warning')\n return\n }\n\n // 如果过滤后文件列表为空直接返回\n if (resultFiles.length === 0) {\n config.customAlert(t('传入的文件不合法'), 'warning')\n return\n }\n\n if (resultFiles.length > maxLength) {\n config.customAlert(t('一次最多上传') + maxLength + t('张图片'), 'warning')\n return\n }\n\n // ------------------------------ 自定义上传 ------------------------------\n if (customUploadImg && typeof customUploadImg === 'function') {\n customUploadImg(resultFiles, this.insertImg.bind(this))\n\n // 阻止以下代码执行,重要!!!\n return\n }\n\n // ------------------------------ 上传图片 ------------------------------\n\n // 添加图片数据\n const formData = new FormData()\n resultFiles.forEach((file: File, index: number) => {\n let name = uploadFileName || file.name\n if (resultFiles.length > 1) {\n // 多个文件时filename 不能重复\n name = name + (index + 1)\n }\n formData.append(name, file)\n })\n if (uploadImgServer) {\n // 添加自定义参数\n const uploadImgServerArr = uploadImgServer.split('#')\n uploadImgServer = uploadImgServerArr[0]\n const uploadImgServerHash = uploadImgServerArr[1] || ''\n forEach(uploadImgParams, (key: string, val: string) => {\n // 因使用者反应,自定义参数不能默认 encode ,由 v3.1.1 版本开始注释掉\n // val = encodeURIComponent(val)\n\n // 第一,将参数拼接到 url 中\n if (uploadImgParamsWithUrl) {\n if (uploadImgServer.indexOf('?') > 0) {\n uploadImgServer += '&'\n } else {\n uploadImgServer += '?'\n }\n uploadImgServer = uploadImgServer + key + '=' + val\n }\n\n // 第二,将参数添加到 formData 中\n formData.append(key, val)\n })\n if (uploadImgServerHash) {\n uploadImgServer += '#' + uploadImgServerHash\n }\n\n // 开始上传\n const xhr = post(uploadImgServer, {\n timeout,\n formData,\n headers: uploadImgHeaders,\n withCredentials: !!withCredentials,\n beforeSend: xhr => {\n if (hooks.before) return hooks.before(xhr, editor, resultFiles)\n },\n onTimeout: xhr => {\n config.customAlert(t('上传图片超时'), 'error')\n if (hooks.timeout) hooks.timeout(xhr, editor)\n },\n onProgress: (percent, e) => {\n const progressBar = new Progress(editor)\n if (e.lengthComputable) {\n percent = e.loaded / e.total\n progressBar.show(percent)\n }\n },\n onError: xhr => {\n config.customAlert(\n t('上传图片错误'),\n 'error',\n `${t('上传图片错误')}${t('服务器返回状态')}: ${xhr.status}`\n )\n if (hooks.error) hooks.error(xhr, editor)\n },\n onFail: (xhr, resultStr) => {\n config.customAlert(\n t('上传图片失败'),\n 'error',\n t('上传图片返回结果错误') + `${t('返回结果')}: ` + resultStr\n )\n if (hooks.fail) hooks.fail(xhr, editor, resultStr)\n },\n onSuccess: (xhr, result: ResType) => {\n if (hooks.customInsert) {\n // 自定义插入图片\n hooks.customInsert(this.insertImg.bind(this), result, editor)\n return\n }\n if (result.errno != '0') {\n // 返回格式不对,应该为 { errno: 0, data: [...] }\n config.customAlert(\n t('上传图片失败'),\n 'error',\n `${t('上传图片返回结果错误')}${t('返回结果')} errno=${result.errno}`\n )\n if (hooks.fail) hooks.fail(xhr, editor, result)\n return\n }\n\n // 成功,插入图片\n const data = result.data\n data.forEach(link => {\n if (typeof link === 'string') {\n this.insertImg(link)\n } else {\n this.insertImg(link.url, link.alt, link.href)\n }\n })\n\n // 钩子函数\n if (hooks.success) hooks.success(xhr, editor, result)\n },\n })\n if (typeof xhr === 'string') {\n // 上传被阻止\n config.customAlert(xhr, 'error')\n }\n\n // 阻止以下代码执行,重要!!!\n return\n }\n\n // ------------------------------ 显示 base64 格式 ------------------------------\n if (uploadImgShowBase64) {\n arrForEach(files, file => {\n const _this = this\n const reader = new FileReader()\n reader.readAsDataURL(file)\n reader.onload = function () {\n if (!this.result) return\n const imgLink = this.result.toString()\n _this.insertImg(imgLink, imgLink)\n }\n })\n }\n }\n}\n\nexport default UploadImg\n","import { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor'\n\n/**\n * 判断传入的单行顶级选区选取是不是todo\n * @param editor 编辑器对象\n */\nfunction isTodo($topSelectElem: DomElement) {\n if ($topSelectElem.length) {\n return $topSelectElem.attr('class') === 'w-e-todo'\n }\n\n return false\n}\n/**\n * 判断选中的内容是不是都是todo\n * @param editor 编辑器对象\n */\nfunction isAllTodo(editor: Editor): boolean | undefined {\n const $topSelectElems = editor.selection.getSelectionRangeTopNodes()\n // 排除为[]的情况\n if ($topSelectElems.length === 0) return\n\n return $topSelectElems.every($topSelectElem => {\n return isTodo($topSelectElem)\n })\n}\n\n/**\n * 根据所在的文本节点和光标在文本节点的位置获取截断的后节点内容\n * @param node 顶级节点\n * @param textNode 光标所在的文本节点\n * @param pos 光标在文本节点的位置\n */\nfunction getCursorNextNode(node: Node, textNode: Node, pos: number): Node | undefined {\n if (!node.hasChildNodes()) return\n\n const newNode = node.cloneNode() as ChildNode\n // 判断光标是否在末尾\n let end = false\n if (textNode.nodeValue === '') {\n end = true\n }\n\n let delArr: Node[] = []\n node.childNodes.forEach(v => {\n //光标后的内容\n if (!isContains(v, textNode) && end) {\n newNode.appendChild(v.cloneNode(true))\n if (v.nodeName !== 'BR') {\n delArr.push(v)\n }\n }\n // 光标所在的区域\n if (isContains(v, textNode)) {\n if (v.nodeType === 1) {\n const childNode = getCursorNextNode(v, textNode, pos) as Node\n if (childNode && childNode.textContent !== '') newNode?.appendChild(childNode)\n }\n if (v.nodeType === 3) {\n if (textNode.isEqualNode(v)) {\n const textContent = dealTextNode(v, pos)\n newNode.textContent = textContent\n }\n }\n end = true\n }\n })\n // 删除选中后原来的节点\n delArr.forEach(v => {\n const node = v as ChildNode\n node.remove()\n })\n\n return newNode\n}\n\n/**\n * 判断otherNode是否包含在node中\n * @param node 父节点\n * @param otherNode 需要判断是不是被包含的节点\n */\nfunction isContains(node: Node, otherNode: Node) {\n // 兼容ie11中textNode不支持contains方法\n if (node.nodeType === 3) {\n return node.nodeValue === otherNode.nodeValue\n }\n\n return node.contains(otherNode)\n}\n/**\n * 获取新的文本节点\n * @param node 要处理的文本节点\n * @param pos 光标在文本节点所在的位置\n * @param start 设置为true时保留开始位置到光标的内容设置为false时删去开始的内容\n */\nfunction dealTextNode(node: Node, pos: number, start: boolean = true): string {\n let content = node.nodeValue\n let oldContent = content?.slice(0, pos) as string\n content = content?.slice(pos) as string\n // start为false时替换content和oldContent\n if (!start) {\n let temp = content\n content = oldContent\n oldContent = temp\n }\n node.nodeValue = oldContent\n return content\n}\n\nexport { getCursorNextNode, isTodo, isAllTodo, dealTextNode }\n","/**\n * @description 双栈实现撤销恢复\n * @author fangzhicong\n */\n\nimport { CeilStack } from './stack'\n\nexport default class Cache<T> {\n /**\n * 正常操作用户输入、js代码修改内容、恢复操作产生的缓存\n */\n protected data: CeilStack<T>\n\n /**\n * 撤销操作产生的缓存(恢复操作时需要这些数据)\n */\n protected revokeData: CeilStack<T>\n\n /**\n * 上一步操作是否为 撤销/恢复\n */\n protected isRe: boolean = false\n\n constructor(protected maxSize: number) {\n this.data = new CeilStack(maxSize)\n this.revokeData = new CeilStack(maxSize)\n }\n\n /**\n * 返回当前栈中的数据长度。格式为:[正常的数据的条数,被撤销的数据的条数]\n */\n public get size() {\n return [this.data.size, this.revokeData.size]\n }\n\n /**\n * 重设数据缓存器的缓存长度(第一次有效)\n */\n public resetMaxSize(maxSize: number) {\n this.data.resetMax(maxSize)\n this.revokeData.resetMax(maxSize)\n }\n\n /**\n * 保存数据\n */\n public save(data: T) {\n if (this.isRe) {\n this.revokeData.clear()\n this.isRe = false\n }\n this.data.instack(data)\n return this\n }\n\n /**\n * 撤销\n * @param fn 撤销时,如果有数据,执行的回调函数\n */\n public revoke(fn: (data: T) => void) {\n !this.isRe && (this.isRe = true)\n let data = this.data.outstack()\n if (data) {\n this.revokeData.instack(data)\n fn(data)\n return true\n }\n return false\n }\n\n /**\n * 恢复\n * @param fn 恢复时,如果有数据,执行的回调函数\n */\n public restore(fn: (data: T) => void) {\n !this.isRe && (this.isRe = true)\n let data = this.revokeData.outstack()\n if (data) {\n this.data.instack(data)\n fn(data)\n return true\n }\n return false\n }\n}\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) {\n if (options && options.unsafe && target[key]) target[key] = src[key];\n else redefine(target, key, src[key], options);\n } return target;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar bind = require('../internals/function-bind-context');\nvar html = require('../internals/html');\nvar createElement = require('../internals/document-create-element');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins -- safe\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(fn) {\n var args = [];\n var argumentsLength = arguments.length;\n var i = 1;\n while (argumentsLength > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n typeof postMessage == 'function' &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = require(\"core-js-pure/stable/map\");","'use strict';\nvar $ = require('./export');\nvar global = require('../internals/global');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar fails = require('../internals/fails');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isObject = require('../internals/is-object');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar defineProperty = require('../internals/object-define-property').f;\nvar forEach = require('../internals/array-iteration').forEach;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var exported = {};\n var Constructor;\n\n if (!DESCRIPTORS || typeof NativeConstructor != 'function'\n || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); }))\n ) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else {\n Constructor = wrapper(function (target, iterable) {\n setInternalState(anInstance(target, Constructor, CONSTRUCTOR_NAME), {\n type: CONSTRUCTOR_NAME,\n collection: new NativeConstructor()\n });\n if (iterable != undefined) iterate(iterable, target[ADDER], { that: target, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n forEach(['add', 'clear', 'delete', 'forEach', 'get', 'has', 'set', 'keys', 'values', 'entries'], function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in NativePrototype && !(IS_WEAK && KEY == 'clear')) {\n createNonEnumerableProperty(Constructor.prototype, KEY, function (a, b) {\n var collection = getInternalState(this).collection;\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = collection[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n }\n });\n\n IS_WEAK || defineProperty(Constructor.prototype, 'size', {\n configurable: true,\n get: function () {\n return getInternalState(this).collection.size;\n }\n });\n }\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: true }, exported);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var $ = require('../internals/export');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar has = require('../internals/has');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = [].splice;\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice.call(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar redefineAll = require('../internals/redefine-all');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, CONSTRUCTOR_NAME);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n redefineAll(C.prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(C.prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return C;\n },\n setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","module.exports = require(\"core-js-pure/stable/object/assign\");","/**\n * @description 样式配置\n * @author wangfupeng\n */\n\nexport default {\n zIndex: 10000,\n}\n","/**\n * @description 默认常量配置\n * @author xiaokyo\n */\n\nexport default {\n focus: true,\n height: 300,\n placeholder: '请输入正文',\n zIndexFullScreen: 10002,\n showFullScreen: true,\n}\n","/**\n * @description 处理粘贴逻辑\n * @author wangfupeng\n */\n\nimport { replaceHtmlSymbol, forEach } from '../../utils/util'\nimport parseHtml from './parse-html'\n\n/**\n * 获取粘贴的纯文本\n * @param e Event 参数\n */\nexport function getPasteText(e: ClipboardEvent): string {\n // const clipboardData = e.clipboardData || (e.originalEvent && e.originalEvent.clipboardData)\n const clipboardData = e.clipboardData // 暂不考虑 originalEvent 的情况\n let pasteText = ''\n if (clipboardData == null) {\n pasteText = (window as any).clipboardData && (window as any).clipboardData.getData('text')\n } else {\n pasteText = clipboardData.getData('text/plain')\n }\n return replaceHtmlSymbol(pasteText)\n}\n\n/**\n * 获取粘贴的 html 字符串\n * @param e Event 参数\n * @param filterStyle 是否过滤 style 样式\n * @param ignoreImg 是否忽略 img 标签\n */\nexport function getPasteHtml(\n e: ClipboardEvent,\n filterStyle: boolean = true,\n ignoreImg: boolean = false\n): string {\n const clipboardData = e.clipboardData // 暂不考虑 originalEvent 的情况\n let pasteHtml = ''\n if (clipboardData) {\n pasteHtml = clipboardData.getData('text/html')\n }\n\n // 无法通过 'text/html' 格式获取 html则尝试获取 text\n if (!pasteHtml) {\n const text = getPasteText(e)\n if (!text) {\n return '' // 没有找到任何文字,则返回\n }\n pasteHtml = `<p>${text}</p>`\n }\n\n // 转译<1后面跟数字的转译成 &lt;1\n pasteHtml = pasteHtml.replace(/<(\\d)/gm, (_, num) => '&lt;' + num)\n\n // pdf复制只会有一个meta标签parseHtml中的过滤meta标签会导致后面内容丢失\n pasteHtml = pasteHtml.replace(/<(\\/?meta.*?)>/gim, '')\n\n // 剔除多余的标签、属性\n pasteHtml = parseHtml(pasteHtml, filterStyle, ignoreImg)\n\n return pasteHtml\n}\n\n/**\n * 获取粘贴的图片文件\n * @param e Event 参数\n */\nexport function getPasteImgs(e: ClipboardEvent): File[] {\n const result: File[] = []\n const txt = getPasteText(e)\n if (txt) {\n // 有文字,就忽略图片\n return result\n }\n\n const items = e.clipboardData?.items\n\n if (!items) return result\n\n forEach(items, (key, value) => {\n const type = value.type\n if (/image/i.test(type)) {\n result.push(value.getAsFile() as File)\n }\n })\n\n return result\n}\n","module.exports = require(\"core-js-pure/stable/set\");","module.exports = require(\"core-js-pure/stable/instance/some\");","/**\n * @description 下拉列表 class\n */\n\nimport $, { DomElement } from '../../utils/dom-core'\nimport DropListMenu from './DropListMenu'\nimport { EMPTY_FN } from '../../utils/const'\n\nexport type DropListItem = {\n $elem: DomElement\n value: string\n}\n\n// droplist 的配置数据\nexport type DropListConf = {\n title: string\n list: DropListItem[]\n type: string // 'list' 列表形式(如“标题”菜单); 'inline-block' 块状形式(如“颜色”菜单)\n clickHandler: (value: DropListItem['value']) => void\n width: number | 100\n}\n\nclass DropList {\n private menu: DropListMenu\n private conf: DropListConf\n private $container: DomElement\n private rendered: boolean\n private _show: boolean\n\n public hideTimeoutId: number\n\n constructor(menu: DropListMenu, conf: DropListConf) {\n this.hideTimeoutId = 0\n this.menu = menu\n this.conf = conf\n\n // 容器\n const $container = $('<div class=\"w-e-droplist\"></div>')\n\n // 标题\n const $title = $(`<p>${conf.title}</p>`)\n $title.addClass('w-e-dp-title')\n $container.append($title)\n\n // 列表和类型\n const list = conf.list || []\n const type = conf.type || 'list'\n // item 的点击事件\n const clickHandler = conf.clickHandler || EMPTY_FN\n\n // 加入 DOM 并绑定事件\n const $list = $('<ul class=\"' + (type === 'list' ? 'w-e-list' : 'w-e-block') + '\"></ul>')\n list.forEach(item => {\n const $elem = item.$elem\n\n const value = item.value\n const $li = $('<li class=\"w-e-item\"></li>')\n if ($elem) {\n $li.append($elem)\n $list.append($li)\n $li.on('click', (e: Event) => {\n clickHandler(value)\n\n // 阻止冒泡\n e.stopPropagation()\n\n // item 点击之后,隐藏 list\n this.hideTimeoutId = window.setTimeout(() => {\n this.hide()\n })\n })\n }\n })\n $container.append($list)\n\n // 绑定隐藏事件\n $container.on('mouseleave', () => {\n this.hideTimeoutId = window.setTimeout(() => {\n this.hide()\n })\n })\n\n // 记录属性\n this.$container = $container\n this.rendered = false\n this._show = false\n }\n\n /**\n * 显示 DropList\n */\n public show() {\n if (this.hideTimeoutId) {\n // 清除之前的定时隐藏\n clearTimeout(this.hideTimeoutId)\n }\n\n const menu = this.menu\n const $menuELem = menu.$elem\n const $container = this.$container\n if (this._show) {\n return\n }\n if (this.rendered) {\n // 显示\n $container.show()\n } else {\n // 加入 DOM 之前先定位位置\n const menuHeight = $menuELem.getBoundingClientRect().height || 0\n const width = this.conf.width || 100 // 默认为 100\n $container.css('margin-top', menuHeight + 'px').css('width', width + 'px')\n\n // 加入到 DOM\n $menuELem.append($container)\n this.rendered = true\n }\n\n // 修改属性\n this._show = true\n }\n\n /**\n * 隐藏 DropList\n */\n public hide() {\n const $container = this.$container\n if (!this._show) {\n return\n }\n // 隐藏并需改属性\n $container.hide()\n this._show = false\n }\n\n public get isShow() {\n return this._show\n }\n}\n\nexport default DropList\n","/**\n * @description 检查选区是否在链接中,即菜单是否应该 active\n * @author wangfupeng\n */\n\nimport Editor from '../../editor/index'\n\nfunction isActive(editor: Editor): boolean {\n const $selectionELem = editor.selection.getSelectionContainerElem()\n if (!$selectionELem?.length) {\n return false\n }\n if ($selectionELem.getNodeName() === 'A') {\n return true\n } else {\n return false\n }\n}\n\nexport default isActive\n","/**\n * @description 上传的核心方法\n * @author wangfupeng\n */\n\nimport { forEach } from '../../utils/util'\nimport { DicType } from '../../config/index'\n\ntype PostOptionType<T> = {\n timeout?: number\n formData?: FormData\n headers?: DicType\n withCredentials?: boolean\n onTimeout?: (xhr: XMLHttpRequest) => void\n onProgress?: (percent: number, event: ProgressEvent) => void\n beforeSend?: (xhr: XMLHttpRequest) => { prevent: boolean; msg: string } | void\n onError?: (xhr: XMLHttpRequest) => void\n onFail?: (xhr: XMLHttpRequest, msg: string) => void\n onSuccess: (xhr: XMLHttpRequest, result: T) => void\n}\n\n/**\n * 发送 post 请求(用于文件上传)\n * @param url url\n * @param option 配置项\n */\nfunction post<T extends Object>(url: string, option: PostOptionType<T>): XMLHttpRequest | string {\n const xhr = new XMLHttpRequest()\n xhr.open('POST', url)\n\n // 超时,默认 10s\n xhr.timeout = option.timeout || 10 * 1000\n xhr.ontimeout = () => {\n console.error('wangEditor - 请求超时')\n option.onTimeout && option.onTimeout(xhr)\n }\n\n // 进度\n if (xhr.upload) {\n xhr.upload.onprogress = (e: ProgressEvent) => {\n const percent = e.loaded / e.total\n option.onProgress && option.onProgress(percent, e)\n }\n }\n\n // 自定义 header\n if (option.headers) {\n forEach(option.headers, (key: string, val: string) => {\n xhr.setRequestHeader(key, val)\n })\n }\n\n // 跨域传 cookie\n xhr.withCredentials = !!option.withCredentials\n\n // 上传之前的钩子函数,在 xhr.send() 之前执行\n if (option.beforeSend) {\n const beforeResult = option.beforeSend(xhr)\n if (beforeResult && typeof beforeResult === 'object') {\n if (beforeResult.prevent) {\n // 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传\n return beforeResult.msg\n }\n }\n }\n\n // 服务端返回之后\n xhr.onreadystatechange = () => {\n if (xhr.readyState !== 4) return\n const status = xhr.status\n if (status < 200) return // 请求发送过程中,尚未返回\n if (status >= 300 && status < 400) return // 重定向\n if (status >= 400) {\n // 40x 50x 报错\n console.error('wangEditor - XHR 报错,状态码 ' + status)\n if (option.onError) option.onError(xhr) // 有,则执行 onError 函数即可\n return\n }\n\n // status = 200 ,得到结果\n const resultStr = xhr.responseText\n let result: T\n if (typeof resultStr !== 'object') {\n try {\n result = JSON.parse(resultStr)\n } catch (ex) {\n console.error('wangEditor - 返回结果不是 JSON 格式', resultStr)\n if (option.onFail) option.onFail(xhr, resultStr)\n return\n }\n } else {\n result = resultStr\n }\n option.onSuccess(xhr, result)\n }\n\n // 发送请求\n xhr.send(option.formData || null)\n\n return xhr\n}\n\nexport default post\n","/**\n * @description 上传进度条\n * @author wangfupeng\n */\n\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\n\nclass Progress {\n private editor: Editor\n private $bar: DomElement\n private $textContainer: DomElement\n private isShow: boolean\n private time: number\n private timeoutId: number\n\n constructor(editor: Editor) {\n this.editor = editor\n this.$textContainer = editor.$textContainerElem\n this.$bar = $('<div class=\"w-e-progress\"></div>')\n\n this.isShow = false\n this.time = 0\n this.timeoutId = 0\n }\n\n /**\n * 显示进度条\n * @param progress 进度百分比\n */\n public show(progress: number): void {\n // 不要重新显示\n if (this.isShow) {\n return\n }\n this.isShow = true\n\n // 渲染 $bar\n const $bar = this.$bar\n const $textContainer = this.$textContainer\n $textContainer.append($bar)\n\n // 改变进度条防抖100ms 渲染一次)\n if (Date.now() - this.time > 100) {\n if (progress <= 1) {\n $bar.css('width', progress * 100 + '%')\n this.time = Date.now()\n }\n }\n\n // 500ms 之后隐藏\n let timeoutId = this.timeoutId\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n this.timeoutId = window.setTimeout(() => {\n this.hide()\n }, 500)\n }\n\n /**\n * 隐藏\n */\n private hide() {\n const $bar = this.$bar\n $bar.remove()\n\n this.isShow = false\n this.time = 0\n this.timeoutId = 0\n }\n}\n\nexport default Progress\n","/**\n * @description 无序列表/有序列表\n * @author tonghan\n */\n\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nimport { updateRange } from './utils'\n\nimport { HandlerListOptions } from './ListHandle/ListHandle'\nimport ListHandleCommand, { createListHandle, ClassType } from './ListHandle'\n\n/**\n * 列表的种类\n */\nexport enum ListType {\n OrderedList = 'OL',\n UnorderedList = 'UL',\n}\n\n// 序列类型\ntype ListTypeValue = ListType\n\nclass List extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"序列\">\n <i class=\"w-e-icon-list2\"></i>\n </div>`\n )\n\n const dropListConf = {\n width: 130,\n title: '序列',\n type: 'list',\n list: [\n {\n $elem: $(`\n <p>\n <i class=\"w-e-icon-list2 w-e-drop-list-item\"></i>\n ${editor.i18next.t('menus.dropListMenu.list.无序列表')}\n <p>`),\n value: ListType.UnorderedList,\n },\n\n {\n $elem: $(\n `<p>\n <i class=\"w-e-icon-list-numbered w-e-drop-list-item\"></i>\n ${editor.i18next.t('menus.dropListMenu.list.有序列表')}\n <p>`\n ),\n value: ListType.OrderedList,\n },\n ],\n clickHandler: (value: string) => {\n // 注意 this 是指向当前的 List 对象\n this.command(value as ListTypeValue)\n },\n }\n\n super($elem, editor, dropListConf)\n }\n\n public command(type: ListTypeValue): void {\n const editor = this.editor\n const $selectionElem = editor.selection.getSelectionContainerElem()\n\n // 选区范围的 DOM 元素不存在,不执行命令\n if ($selectionElem === undefined) return\n\n // 获取选区范围内的顶级 DOM 元素\n this.handleSelectionRangeNodes(type)\n\n // 是否激活\n this.tryChangeActive()\n }\n\n public validator($startElem: DomElement, $endElem: DomElement, $textElem: DomElement): boolean {\n if (\n !$startElem.length ||\n !$endElem.length ||\n $textElem.equal($startElem) ||\n $textElem.equal($endElem)\n ) {\n return false\n }\n\n return true\n }\n\n private handleSelectionRangeNodes(listType: ListTypeValue): void {\n const editor = this.editor\n const selection = editor.selection\n\n // 获取 序列标签\n const listTarget = listType.toLowerCase()\n\n // 获取相对应的 元属节点\n let $selectionElem = selection.getSelectionContainerElem() as DomElement\n const $startElem = (selection.getSelectionStartElem() as DomElement).getNodeTop(editor)\n const $endElem = (selection.getSelectionEndElem() as DomElement).getNodeTop(editor)\n\n // 验证是否执行 处理逻辑\n if (!this.validator($startElem, $endElem, editor.$textElem)) {\n return\n }\n\n // 获取选区\n const _range = selection.getRange()\n const _collapsed = _range?.collapsed\n\n // 防止光标的时候判断异常\n if (!editor.$textElem.equal($selectionElem)) {\n $selectionElem = $selectionElem.getNodeTop(editor)\n }\n\n const options: HandlerListOptions = {\n editor,\n listType,\n listTarget,\n $selectionElem,\n $startElem,\n $endElem,\n }\n\n let classType: ClassType\n\n // =====================================\n // 当 selectionElem 属于序列元素的时候\n // 代表着当前选区一定是在一个序列元素内的\n // =====================================\n if (this.isOrderElem($selectionElem as DomElement)) {\n classType = ClassType.Wrap\n }\n\n // =====================================\n // 当 startElem 和 endElem 属于序列元素的时候\n // 代表着当前选区一定是在再两个序列的中间(包括两个序列)\n // =====================================\n else if (\n this.isOrderElem($startElem as DomElement) &&\n this.isOrderElem($endElem as DomElement)\n ) {\n classType = ClassType.Join\n }\n\n // =====================================\n // 选区开始元素为 序列 的时候\n // =====================================\n else if (this.isOrderElem($startElem as DomElement)) {\n classType = ClassType.StartJoin\n }\n\n // =====================================\n // 选区结束元素为 序列 的时候\n // =====================================\n else if (this.isOrderElem($endElem as DomElement)) {\n classType = ClassType.EndJoin\n }\n\n // =====================================\n // 当选区不是序列内且开头和结尾不是序列的时候\n // 直接获取所有顶级段落然后过滤\n // 代表着 设置序列 的操作\n // =====================================\n else {\n classType = ClassType.Other\n }\n\n const listHandleCmd = new ListHandleCommand(\n createListHandle(classType, options, _range as Range)\n )\n\n // 更新选区\n updateRange(editor, listHandleCmd.getSelectionRangeElem(), !!_collapsed)\n }\n\n /**\n * 是否是序列元素节点 UL and OL\n * @param $node\n */\n private isOrderElem($node: DomElement) {\n const nodeName = $node.getNodeName()\n if (nodeName === ListType.OrderedList || nodeName === ListType.UnorderedList) {\n return true\n }\n return false\n }\n\n public tryChangeActive(): void {}\n}\n\nexport default List\n","module.exports = require(\"core-js-pure/stable/array/from\");","/**\n * @description 检查选区是否在代码中,即菜单是否应该 active\n * @author lkw\n */\n\nimport Editor from '../../editor/index'\n\nfunction isActive(editor: Editor): boolean {\n const $selectionELem = editor.selection.getSelectionContainerElem()\n if (!$selectionELem?.length) {\n return false\n }\n if (\n $selectionELem.getNodeName() == 'CODE' ||\n $selectionELem.getNodeName() == 'PRE' ||\n $selectionELem.parent().getNodeName() == 'CODE' ||\n $selectionELem.parent().getNodeName() == 'PRE' ||\n /hljs/.test($selectionELem.parent().attr('class'))\n ) {\n return true\n } else {\n return false\n }\n}\n\nexport default isActive\n","import $, { DomElement } from '../../utils/dom-core'\nexport class todo {\n private template: string\n private checked: boolean\n private $todo: DomElement\n private $child: DomElement\n constructor($orginElem?: DomElement) {\n this.template = `<ul class=\"w-e-todo\"><li><span contenteditable=\"false\"><input type=\"checkbox\"></span></li></ul>`\n this.checked = false\n this.$todo = $(this.template)\n this.$child = $orginElem?.childNodes()?.clone(true) as DomElement\n }\n\n public init() {\n const $child = this.$child\n const $inputContainer = this.getInputContainer()\n\n if ($child) {\n $child.insertAfter($inputContainer)\n }\n }\n\n public getInput(): DomElement {\n const $todo = this.$todo\n const $input = $todo.find('input')\n return $input\n }\n\n public getInputContainer(): DomElement {\n const $inputContainer = this.getInput().parent()\n return $inputContainer\n }\n\n public getTodo(): DomElement {\n return this.$todo\n }\n}\n\nfunction createTodo($orginElem?: DomElement): todo {\n const t = new todo($orginElem)\n t.init()\n return t\n}\n\nexport default createTodo\n","/**\n * @description 入口文件\n * @author wangfupeng\n */\n\nimport './assets/style/common.less'\nimport './assets/style/icon.less'\nimport './assets/style/menus.less'\nimport './assets/style/text.less'\nimport './assets/style/panel.less'\nimport './assets/style/droplist.less'\n\nimport './utils/polyfill'\nimport Editor from './editor/index'\n\nexport * from './menus/menu-constructors/index'\n\n// 检验是否浏览器环境\ntry {\n document\n} catch (ex) {\n throw new Error('请在浏览器环境下运行')\n}\n\nexport default Editor\n","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n defineProperty: objectDefinePropertyModile.f\n});\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = input[TO_PRIMITIVE];\n var result;\n if (exoticToPrim !== undefined) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var isObject = require('../internals/is-object');\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (pref !== 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./common.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-toolbar,\\n.w-e-text-container,\\n.w-e-menu-panel {\\n padding: 0;\\n margin: 0;\\n box-sizing: border-box;\\n background-color: #fff;\\n /*表情菜单样式*/\\n /*分割线样式*/\\n}\\n.w-e-toolbar h1,\\n.w-e-text-container h1,\\n.w-e-menu-panel h1 {\\n font-size: 32px !important;\\n}\\n.w-e-toolbar h2,\\n.w-e-text-container h2,\\n.w-e-menu-panel h2 {\\n font-size: 24px !important;\\n}\\n.w-e-toolbar h3,\\n.w-e-text-container h3,\\n.w-e-menu-panel h3 {\\n font-size: 18.72px !important;\\n}\\n.w-e-toolbar h4,\\n.w-e-text-container h4,\\n.w-e-menu-panel h4 {\\n font-size: 16px !important;\\n}\\n.w-e-toolbar h5,\\n.w-e-text-container h5,\\n.w-e-menu-panel h5 {\\n font-size: 13.28px !important;\\n}\\n.w-e-toolbar p,\\n.w-e-text-container p,\\n.w-e-menu-panel p {\\n font-size: 16px !important;\\n}\\n.w-e-toolbar .eleImg,\\n.w-e-text-container .eleImg,\\n.w-e-menu-panel .eleImg {\\n cursor: pointer;\\n display: inline-block;\\n font-size: 18px;\\n padding: 0 3px;\\n}\\n.w-e-toolbar *,\\n.w-e-text-container *,\\n.w-e-menu-panel * {\\n padding: 0;\\n margin: 0;\\n box-sizing: border-box;\\n}\\n.w-e-toolbar hr,\\n.w-e-text-container hr,\\n.w-e-menu-panel hr {\\n cursor: pointer;\\n display: block;\\n height: 0px;\\n border: 0;\\n border-top: 3px solid #ccc;\\n margin: 20px 0;\\n}\\n.w-e-clear-fix:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n}\\n.w-e-drop-list-item {\\n position: relative;\\n top: 1px;\\n padding-right: 7px;\\n color: #333 !important;\\n}\\n.w-e-drop-list-tl {\\n padding-left: 10px;\\n text-align: left;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./icon.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../font/w-e-icon.woff?ddq1c7\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\nexports.push([module.id, \"@font-face {\\n font-family: 'w-e-icon';\\n src: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format('truetype');\\n font-weight: normal;\\n font-style: normal;\\n}\\n[class^=\\\"w-e-icon-\\\"],\\n[class*=\\\" w-e-icon-\\\"] {\\n /* use !important to prevent issues with browser extensions that change fonts */\\n font-family: 'w-e-icon' !important;\\n speak: none;\\n font-style: normal;\\n font-weight: normal;\\n font-variant: normal;\\n text-transform: none;\\n line-height: 1;\\n /* Better Font Rendering =========== */\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n.w-e-icon-close:before {\\n content: \\\"\\\\f00d\\\";\\n}\\n.w-e-icon-upload2:before {\\n content: \\\"\\\\e9c6\\\";\\n}\\n.w-e-icon-trash-o:before {\\n content: \\\"\\\\f014\\\";\\n}\\n.w-e-icon-header:before {\\n content: \\\"\\\\f1dc\\\";\\n}\\n.w-e-icon-pencil2:before {\\n content: \\\"\\\\e906\\\";\\n}\\n.w-e-icon-paint-brush:before {\\n content: \\\"\\\\f1fc\\\";\\n}\\n.w-e-icon-image:before {\\n content: \\\"\\\\e90d\\\";\\n}\\n.w-e-icon-play:before {\\n content: \\\"\\\\e912\\\";\\n}\\n.w-e-icon-location:before {\\n content: \\\"\\\\e947\\\";\\n}\\n.w-e-icon-undo:before {\\n content: \\\"\\\\e965\\\";\\n}\\n.w-e-icon-redo:before {\\n content: \\\"\\\\e966\\\";\\n}\\n.w-e-icon-quotes-left:before {\\n content: \\\"\\\\e977\\\";\\n}\\n.w-e-icon-list-numbered:before {\\n content: \\\"\\\\e9b9\\\";\\n}\\n.w-e-icon-list2:before {\\n content: \\\"\\\\e9bb\\\";\\n}\\n.w-e-icon-link:before {\\n content: \\\"\\\\e9cb\\\";\\n}\\n.w-e-icon-happy:before {\\n content: \\\"\\\\e9df\\\";\\n}\\n.w-e-icon-bold:before {\\n content: \\\"\\\\ea62\\\";\\n}\\n.w-e-icon-underline:before {\\n content: \\\"\\\\ea63\\\";\\n}\\n.w-e-icon-italic:before {\\n content: \\\"\\\\ea64\\\";\\n}\\n.w-e-icon-strikethrough:before {\\n content: \\\"\\\\ea65\\\";\\n}\\n.w-e-icon-table2:before {\\n content: \\\"\\\\ea71\\\";\\n}\\n.w-e-icon-paragraph-left:before {\\n content: \\\"\\\\ea77\\\";\\n}\\n.w-e-icon-paragraph-center:before {\\n content: \\\"\\\\ea78\\\";\\n}\\n.w-e-icon-paragraph-right:before {\\n content: \\\"\\\\ea79\\\";\\n}\\n.w-e-icon-paragraph-justify:before {\\n content: \\\"\\\\ea7a\\\";\\n}\\n.w-e-icon-terminal:before {\\n content: \\\"\\\\f120\\\";\\n}\\n.w-e-icon-page-break:before {\\n content: \\\"\\\\ea68\\\";\\n}\\n.w-e-icon-cancel-circle:before {\\n content: \\\"\\\\ea0d\\\";\\n}\\n.w-e-icon-font:before {\\n content: \\\"\\\\ea5c\\\";\\n}\\n.w-e-icon-text-heigh:before {\\n content: \\\"\\\\ea5f\\\";\\n}\\n.w-e-icon-paint-format:before {\\n content: \\\"\\\\e90c\\\";\\n}\\n.w-e-icon-indent-increase:before {\\n content: \\\"\\\\ea7b\\\";\\n}\\n.w-e-icon-indent-decrease:before {\\n content: \\\"\\\\ea7c\\\";\\n}\\n.w-e-icon-row-height:before {\\n content: \\\"\\\\e9be\\\";\\n}\\n.w-e-icon-fullscreen_exit:before {\\n content: \\\"\\\\e900\\\";\\n}\\n.w-e-icon-fullscreen:before {\\n content: \\\"\\\\e901\\\";\\n}\\n.w-e-icon-split-line:before {\\n content: \\\"\\\\ea0b\\\";\\n}\\n.w-e-icon-checkbox-checked:before {\\n content: \\\"\\\\ea52\\\";\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== 'string') {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n'), \"\\\"\");\n }\n\n return url;\n};","export default \"data:font/woff;base64,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\"","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./menus.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-toolbar {\\n display: flex;\\n padding: 0 6px;\\n flex-wrap: wrap;\\n position: relative;\\n /* 单个菜单 */\\n}\\n.w-e-toolbar .w-e-menu {\\n position: relative;\\n display: flex;\\n width: 40px;\\n height: 40px;\\n align-items: center;\\n justify-content: center;\\n text-align: center;\\n cursor: pointer;\\n}\\n.w-e-toolbar .w-e-menu i {\\n color: #999;\\n}\\n.w-e-toolbar .w-e-menu:hover {\\n background-color: #F6F6F6;\\n}\\n.w-e-toolbar .w-e-menu:hover i {\\n color: #333;\\n}\\n.w-e-toolbar .w-e-active i {\\n color: #1e88e5;\\n}\\n.w-e-toolbar .w-e-active:hover i {\\n color: #1e88e5;\\n}\\n.w-e-menu-tooltip {\\n position: absolute;\\n display: flex;\\n color: #f1f1f1;\\n background-color: rgba(0, 0, 0, 0.75);\\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15);\\n border-radius: 4px;\\n padding: 4px 5px 6px;\\n justify-content: center;\\n align-items: center;\\n}\\n.w-e-menu-tooltip-up::after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border: 5px solid rgba(0, 0, 0, 0);\\n border-top-color: rgba(0, 0, 0, 0.73);\\n}\\n.w-e-menu-tooltip-down::after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border: 5px solid rgba(0, 0, 0, 0);\\n border-bottom-color: rgba(0, 0, 0, 0.73);\\n}\\n.w-e-menu-tooltip-item-wrapper {\\n font-size: 14px;\\n margin: 0 5px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./text.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-text-container {\\n position: relative;\\n height: 100%;\\n}\\n.w-e-text-container .w-e-progress {\\n position: absolute;\\n background-color: #1e88e5;\\n top: 0;\\n left: 0;\\n height: 1px;\\n}\\n.w-e-text-container .placeholder {\\n color: #D4D4D4;\\n position: absolute;\\n font-size: 11pt;\\n line-height: 22px;\\n left: 10px;\\n top: 10px;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none;\\n z-index: -1;\\n}\\n.w-e-text {\\n padding: 0 10px;\\n overflow-y: auto;\\n}\\n.w-e-text p,\\n.w-e-text h1,\\n.w-e-text h2,\\n.w-e-text h3,\\n.w-e-text h4,\\n.w-e-text h5,\\n.w-e-text table,\\n.w-e-text pre {\\n margin: 10px 0;\\n line-height: 1.5;\\n}\\n.w-e-text ul,\\n.w-e-text ol {\\n margin: 10px 0 10px 20px;\\n}\\n.w-e-text blockquote {\\n display: block;\\n border-left: 8px solid #d0e5f2;\\n padding: 5px 10px;\\n margin: 10px 0;\\n line-height: 1.4;\\n font-size: 100%;\\n background-color: #f1f1f1;\\n}\\n.w-e-text code {\\n display: inline-block;\\n background-color: #f1f1f1;\\n border-radius: 3px;\\n padding: 3px 5px;\\n margin: 0 3px;\\n}\\n.w-e-text pre code {\\n display: block;\\n}\\n.w-e-text table {\\n border-top: 1px solid #ccc;\\n border-left: 1px solid #ccc;\\n}\\n.w-e-text table td,\\n.w-e-text table th {\\n border-bottom: 1px solid #ccc;\\n border-right: 1px solid #ccc;\\n padding: 3px 5px;\\n min-height: 30px;\\n}\\n.w-e-text table th {\\n border-bottom: 2px solid #ccc;\\n text-align: center;\\n background-color: #f1f1f1;\\n}\\n.w-e-text:focus {\\n outline: none;\\n}\\n.w-e-text img {\\n cursor: pointer;\\n}\\n.w-e-text img:hover {\\n box-shadow: 0 0 5px #333;\\n}\\n.w-e-text .w-e-todo {\\n margin: 0 0 0 20px;\\n}\\n.w-e-text .w-e-todo li {\\n list-style: none;\\n font-size: 1em;\\n}\\n.w-e-text .w-e-todo li span:nth-child(1) {\\n position: relative;\\n left: -18px;\\n}\\n.w-e-text .w-e-todo li span:nth-child(1) input {\\n position: absolute;\\n margin-right: 3px;\\n}\\n.w-e-text .w-e-todo li span:nth-child(1) input[type=checkbox] {\\n top: 50%;\\n margin-top: -6px;\\n}\\n.w-e-tooltip {\\n position: absolute;\\n display: flex;\\n color: #f1f1f1;\\n background-color: rgba(0, 0, 0, 0.75);\\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15);\\n border-radius: 4px;\\n padding: 4px 5px 6px;\\n justify-content: center;\\n align-items: center;\\n}\\n.w-e-tooltip-up::after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border: 5px solid rgba(0, 0, 0, 0);\\n border-top-color: rgba(0, 0, 0, 0.73);\\n}\\n.w-e-tooltip-down::after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border: 5px solid rgba(0, 0, 0, 0);\\n border-bottom-color: rgba(0, 0, 0, 0.73);\\n}\\n.w-e-tooltip-item-wrapper {\\n cursor: pointer;\\n font-size: 14px;\\n margin: 0 5px;\\n}\\n.w-e-tooltip-item-wrapper:hover {\\n color: #ccc;\\n text-decoration: underline;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./panel.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-menu .w-e-panel-container {\\n position: absolute;\\n top: 0;\\n left: 50%;\\n border: 1px solid #ccc;\\n border-top: 0;\\n box-shadow: 1px 1px 2px #ccc;\\n color: #333;\\n background-color: #fff;\\n text-align: left;\\n /* 为 emotion panel 定制的样式 */\\n /* 上传图片、上传视频的 panel 定制样式 */\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-close {\\n position: absolute;\\n right: 0;\\n top: 0;\\n padding: 5px;\\n margin: 2px 5px 0 0;\\n cursor: pointer;\\n color: #999;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-close:hover {\\n color: #333;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-title {\\n list-style: none;\\n display: flex;\\n font-size: 14px;\\n margin: 2px 10px 0 10px;\\n border-bottom: 1px solid #f1f1f1;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-title .w-e-item {\\n padding: 3px 5px;\\n color: #999;\\n cursor: pointer;\\n margin: 0 3px;\\n position: relative;\\n top: 1px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-title .w-e-active {\\n color: #333;\\n border-bottom: 1px solid #333;\\n cursor: default;\\n font-weight: 700;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content {\\n padding: 10px 15px 10px 15px;\\n font-size: 16px;\\n /* 输入框的样式 */\\n /* 按钮的样式 */\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input:focus,\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content textarea:focus,\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content button:focus {\\n outline: none;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content textarea {\\n width: 100%;\\n border: 1px solid #ccc;\\n padding: 5px;\\n margin-top: 10px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content textarea:focus {\\n border-color: #1e88e5;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text] {\\n border: none;\\n border-bottom: 1px solid #ccc;\\n font-size: 14px;\\n height: 20px;\\n color: #333;\\n text-align: left;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text].small {\\n width: 30px;\\n text-align: center;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text].block {\\n display: block;\\n width: 100%;\\n margin: 10px 0;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text]:focus {\\n border-bottom: 2px solid #1e88e5;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button {\\n font-size: 14px;\\n color: #1e88e5;\\n border: none;\\n padding: 5px 10px;\\n background-color: #fff;\\n cursor: pointer;\\n border-radius: 3px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.left {\\n float: left;\\n margin-right: 10px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.right {\\n float: right;\\n margin-left: 10px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.gray {\\n color: #999;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.red {\\n color: #c24f4a;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button:hover {\\n background-color: #f1f1f1;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n}\\n.w-e-menu .w-e-panel-container .w-e-emoticon-container .w-e-item {\\n cursor: pointer;\\n font-size: 18px;\\n padding: 0 3px;\\n display: inline-block;\\n}\\n.w-e-menu .w-e-panel-container .w-e-up-img-container,\\n.w-e-menu .w-e-panel-container .w-e-up-video-container {\\n text-align: center;\\n}\\n.w-e-menu .w-e-panel-container .w-e-up-img-container .w-e-up-btn,\\n.w-e-menu .w-e-panel-container .w-e-up-video-container .w-e-up-btn {\\n display: inline-block;\\n color: #999;\\n cursor: pointer;\\n font-size: 60px;\\n line-height: 1;\\n}\\n.w-e-menu .w-e-panel-container .w-e-up-img-container .w-e-up-btn:hover,\\n.w-e-menu .w-e-panel-container .w-e-up-video-container .w-e-up-btn:hover {\\n color: #333;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./droplist.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-toolbar .w-e-droplist {\\n position: absolute;\\n left: 0;\\n top: 0;\\n background-color: #fff;\\n border: 1px solid #f1f1f1;\\n border-right-color: #ccc;\\n border-bottom-color: #ccc;\\n}\\n.w-e-toolbar .w-e-droplist .w-e-dp-title {\\n text-align: center;\\n color: #999;\\n line-height: 2;\\n border-bottom: 1px solid #f1f1f1;\\n font-size: 13px;\\n}\\n.w-e-toolbar .w-e-droplist ul.w-e-list {\\n list-style: none;\\n line-height: 1;\\n}\\n.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item {\\n color: #333;\\n padding: 5px 0;\\n}\\n.w-e-toolbar .w-e-droplist ul.w-e-list li.w-e-item:hover {\\n background-color: #f1f1f1;\\n}\\n.w-e-toolbar .w-e-droplist ul.w-e-block {\\n list-style: none;\\n text-align: left;\\n padding: 5px;\\n}\\n.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item {\\n display: inline-block;\\n padding: 3px 5px;\\n}\\n.w-e-toolbar .w-e-droplist ul.w-e-block li.w-e-item:hover {\\n background-color: #f1f1f1;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * @description polyfill 【注意js 语法的兼容,都通过 babel transform runtime 支持】\n * @author wangfupeng\n */\n\nif (!Element.prototype.matches) {\n Element.prototype.matches = function (s) {\n let matches: NodeListOf<Element> = this.ownerDocument.querySelectorAll(s)\n let i: number = matches.length\n for (i; i >= 0; i--) {\n if (matches.item(i) === this) break\n }\n return i > -1\n }\n}\n\n// 有的第三方库需要原生 Promise ,而 IE11 又没有原生 Promise ,就报错\nif (!window.Promise) {\n window.Promise = Promise\n}\n","module.exports = require(\"core-js-pure/stable/promise\");","var parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","'use strict';\nvar $ = require('../internals/export');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar iterate = require('../internals/iterate');\nvar toString = require('../internals/to-string');\n\nvar $AggregateError = function AggregateError(errors, message) {\n var that = this;\n if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);\n if (setPrototypeOf) {\n // eslint-disable-next-line unicorn/error-message -- expected\n that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', toString(message));\n var errorsArray = [];\n iterate(errors, errorsArray.push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\n$AggregateError.prototype = create(Error.prototype, {\n constructor: createPropertyDescriptor(5, $AggregateError),\n message: createPropertyDescriptor(5, ''),\n name: createPropertyDescriptor(5, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true }, {\n AggregateError: $AggregateError\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar isObject = require('../internals/is-object');\nvar aFunction = require('../internals/a-function');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromiseConstructorPrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0;\n // variable length - can't use forEach\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n task.call(global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n then.call(value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction(executor);\n Internal.call(this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromiseConstructorPrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromiseConstructorPrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify(state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && typeof NativePromise == 'function' && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction(C.resolve);\n iterate(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = promise.then;\n notify = function () {\n then.call(promise, flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n","module.exports = typeof window == 'object';\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aFunction = require('../internals/a-function');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aFunction(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n errors.push(undefined);\n remaining++;\n promiseResolve.call(C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar redefine = require('../internals/redefine');\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromise && fails(function () {\n NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && typeof NativePromise == 'function') {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromise.prototype['finally'] !== method) {\n redefine(NativePromise.prototype, 'finally', method, { unsafe: true });\n }\n}\n","var toInteger = require('../internals/to-integer');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.codePointAt` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","require('../../modules/web.dom-collections.iterator');\nvar forEach = require('../array/virtual/for-each');\nvar classof = require('../../internals/classof');\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.forEach;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.forEach)\n // eslint-disable-next-line no-prototype-builtins -- safe\n || DOMIterables.hasOwnProperty(classof(it)) ? forEach : own;\n};\n","var parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n","require('../../../modules/es.array.for-each');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n","require('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","var parent = require('../../es/instance/map');\n\nmodule.exports = parent;\n","var map = require('../array/virtual/map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.map;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.map) ? map : own;\n};\n","require('../../../modules/es.array.map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').map;\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var parent = require('../../es/instance/trim');\n\nmodule.exports = parent;\n","var trim = require('../string/virtual/trim');\n\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.trim;\n return typeof it === 'string' || it === StringPrototype\n || (it instanceof String && own === StringPrototype.trim) ? trim : own;\n};\n","require('../../../modules/es.string.trim');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').trim;\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","var parent = require('../../es/map');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","require('../../modules/es.array.iterator');\nrequire('../../modules/es.map');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Map;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\nmodule.exports = collection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n","var indexOf = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.indexOf;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.indexOf) ? indexOf : own;\n};\n","require('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var parent = require('../../es/instance/splice');\n\nmodule.exports = parent;\n","var splice = require('../array/virtual/splice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.splice;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.splice) ? splice : own;\n};\n","require('../../../modules/es.array.splice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').splice;\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n","var filter = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.filter) ? filter : own;\n};\n","require('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var parent = require('../../es/instance/includes');\n\nmodule.exports = parent;\n","var arrayIncludes = require('../array/virtual/includes');\nvar stringIncludes = require('../string/virtual/includes');\n\nvar ArrayPrototype = Array.prototype;\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.includes;\n if (it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.includes)) return arrayIncludes;\n if (typeof it === 'string' || it === StringPrototype || (it instanceof String && own === StringPrototype.includes)) {\n return stringIncludes;\n } return own;\n};\n","require('../../../modules/es.array.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').includes;\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","require('../../../modules/es.string.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').includes;\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~toString(requireObjectCoercible(this))\n .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var parent = require('../../es/instance/bind');\n\nmodule.exports = parent;\n","var bind = require('../function/virtual/bind');\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n var own = it.bind;\n return it === FunctionPrototype || (it instanceof Function && own === FunctionPrototype.bind) ? bind : own;\n};\n","require('../../../modules/es.function.bind');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Function').bind;\n","var $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true }, {\n bind: bind\n});\n","'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","module.exports = require(\"core-js-pure/features/symbol\");","var parent = require('../../stable/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.pattern-match');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n","var parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","require('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","// empty\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","// empty\n","// empty\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n","module.exports = require(\"core-js-pure/features/symbol/iterator\");","var parent = require('../../stable/symbol/iterator');\n\nmodule.exports = parent;\n","var parent = require('../../es/symbol/iterator');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","module.exports = require(\"core-js-pure/stable/parse-int\");","var parent = require('../es/parse-int');\n\nmodule.exports = parent;\n","require('../modules/es.parse-int');\nvar path = require('../internals/path');\n\nmodule.exports = path.parseInt;\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","var global = require('../internals/global');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(toString(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n","var slice = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.slice;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.slice) ? slice : own;\n};\n","require('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","require('../modules/web.timers');\nvar path = require('../internals/path');\n\nmodule.exports = path.setTimeout;\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\n\nvar wrap = function (scheduler) {\n return function (handler, timeout /* , ...arguments */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n // eslint-disable-next-line no-new-func -- spec requirement\n (typeof handler == 'function' ? handler : Function(handler)).apply(this, args);\n } : handler, timeout);\n };\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n$({ global: true, bind: true, forced: MSIE }, {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n});\n","/**\n * @description 编辑器配置\n * @author wangfupeng\n */\n\nimport menusConfig, {\n EmotionsType,\n FontSizeConfType,\n IndentationType,\n tooltipPositionType,\n FontStyleType,\n} from './menus'\nimport eventsConfig from './events'\nimport styleConfig from './style'\nimport pasteConfig from './paste'\nimport cmdConfig from './cmd'\nimport imageConfig, { UploadImageHooksType } from './image'\nimport textConfig from './text'\nimport langConfig from './lang'\nimport historyConfig from './history'\nimport videoConfig, { UploadVideoHooksType } from './video'\n\n// 字典类型\nexport type DicType = {\n [key: string]: string\n}\n\n// 定义配置项的类型规范\nexport type ConfigType = {\n height: number\n languageType: string[]\n languageTab: string\n menus: string[]\n excludeMenus: string[]\n fontNames: FontStyleType\n lineHeights: string[]\n showMenuTooltips: boolean\n indentation: IndentationType\n fontSizes: FontSizeConfType\n colors: string[]\n emotions: EmotionsType[]\n zIndex: number\n onchange: Function | null\n onfocus: Function\n onblur: Function\n onchangeTimeout: number\n pasteFilterStyle: boolean\n pasteIgnoreImg: boolean\n pasteTextHandle: Function\n styleWithCSS: boolean\n linkImgCallback: Function\n onSelectionChange: Function\n\n placeholder: string\n zIndexFullScreen: number\n showFullScreen: boolean\n showLinkImg: boolean\n showLinkImgAlt: boolean\n showLinkImgHref: boolean\n uploadImgAccept: string[]\n uploadImgServer: string\n uploadImgShowBase64: boolean\n uploadImgMaxSize: number\n uploadImgMaxLength: number\n uploadFileName: string\n uploadImgParams: DicType\n uploadImgParamsWithUrl: boolean\n uploadImgHeaders: DicType\n uploadImgHooks: UploadImageHooksType\n uploadImgTimeout: number\n withCredentials: boolean\n customUploadImg: Function | null\n uploadImgFromMedia: Function | null\n customAlert: Function\n\n onCatalogChange: Function | null\n\n lang: string\n languages: typeof langConfig\n\n linkCheck: Function\n linkImgCheck: Function\n compatibleMode: () => boolean\n historyMaxSize: number\n\n focus: boolean\n\n onlineVideoCheck: Function\n onlineVideoCallback: Function\n\n showLinkVideo: Boolean\n uploadVideoAccept: string[]\n uploadVideoServer: string\n uploadVideoMaxSize: number\n uploadVideoName: string\n uploadVideoParams: DicType\n uploadVideoParamsWithUrl: boolean\n uploadVideoHeaders: DicType\n uploadVideoHooks: UploadVideoHooksType\n uploadVideoTimeout: number\n withVideoCredentials: boolean\n customUploadVideo: Function | null\n customInsertVideo: Function | null\n\n menuTooltipPosition: tooltipPositionType\n}\n\nexport type Resource = {\n [language: string]: ResourceLanguage\n}\n\nexport type ResourceLanguage = {\n [namespace: string]: ResourceKey\n}\n\nexport type ResourceKey =\n | string\n | {\n [key: string]: any\n }\n\n// 合并所有的配置信息\nconst defaultConfig = Object.assign(\n {},\n menusConfig,\n eventsConfig,\n styleConfig,\n cmdConfig,\n pasteConfig,\n imageConfig,\n textConfig,\n langConfig,\n historyConfig,\n videoConfig,\n //链接校验的配置函数\n {\n linkCheck: function (text: string, link: string): string | boolean {\n return true\n },\n }\n)\n\nexport default defaultConfig\n","var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n","require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/**\n * @description 菜单配置\n * @author wangfupeng\n */\n\n// 表情菜单数据结构类型\nexport type EmotionsContentType = {\n alt: string\n src: string\n}\nexport type EmotionsType = {\n title: string\n type: string\n content: Array<EmotionsContentType | string>\n}\n\n// font-size 类型\nexport type FontSizeConfType = {\n [key: string]: {\n name: string\n value: string\n }\n}\n\n// liuWei 2020-04-17 对于字体增加扩展类型\n// font-style 类型\nexport type FontStyleType = Array<\n | {\n name: string\n value: string\n }\n | string\n>\n\n// indent\nexport interface IndentationOptions {\n value: number\n unit: string\n}\nexport type IndentationType = string | IndentationOptions\n\n// tooltip-position类型\nexport type tooltipPositionType = 'up' | 'down'\n\n/*表情菜单数据结构类型END*/\nexport default {\n menus: [\n 'head',\n 'bold',\n 'fontSize',\n // 'customFontSize',\n 'fontName',\n 'italic',\n 'underline',\n 'strikeThrough',\n 'indent',\n 'lineHeight',\n 'foreColor',\n 'backColor',\n 'link',\n 'list',\n 'todo',\n 'justify',\n 'quote',\n 'emoticon',\n 'image',\n 'video',\n 'table',\n 'code',\n 'splitLine',\n 'undo',\n 'redo',\n ],\n\n fontNames: [\n '黑体',\n '仿宋',\n '楷体',\n '标楷体',\n '华文仿宋',\n '华文楷体',\n '宋体',\n '微软雅黑',\n 'Arial',\n 'Tahoma',\n 'Verdana',\n 'Times New Roman',\n 'Courier New',\n ],\n // fontNames: [{ name: '宋体', value: '宋体' }],\n\n fontSizes: {\n 'x-small': {\n name: '10px',\n value: '1',\n },\n small: {\n name: '13px',\n value: '2',\n },\n normal: {\n name: '16px',\n value: '3',\n },\n large: {\n name: '18px',\n value: '4',\n },\n 'x-large': {\n name: '24px',\n value: '5',\n },\n 'xx-large': {\n name: '32px',\n value: '6',\n },\n 'xxx-large': {\n name: '48px',\n value: '7',\n },\n },\n\n // customFontSize: [ // 该菜单暂时不用 - 王福朋 20200924\n // { value: '9px', text: '9' },\n // { value: '10px', text: '10' },\n // { value: '12px', text: '12' },\n // { value: '14px', text: '14' },\n // { value: '16px', text: '16' },\n // { value: '20px', text: '20' },\n // { value: '42px', text: '42' },\n // { value: '72px', text: '72' },\n // ],\n\n colors: [\n '#000000',\n '#ffffff',\n '#eeece0',\n '#1c487f',\n '#4d80bf',\n '#c24f4a',\n '#8baa4a',\n '#7b5ba1',\n '#46acc8',\n '#f9963b',\n ],\n\n //插入代码语言配置\n languageType: [\n 'Bash',\n 'C',\n 'C#',\n 'C++',\n 'CSS',\n 'Java',\n 'JavaScript',\n 'JSON',\n 'TypeScript',\n 'Plain text',\n 'Html',\n 'XML',\n 'SQL',\n 'Go',\n 'Kotlin',\n 'Lua',\n 'Markdown',\n 'PHP',\n 'Python',\n 'Shell Session',\n 'Ruby',\n ],\n\n languageTab: '    ',\n /**\n * 表情配置菜单\n * 如果为emoji表情直接作为元素插入\n * emoticon:Array<EmotionsType>\n */\n emotions: [\n {\n // tab 的标题\n title: '表情',\n // type -> 'emoji' / 'image'\n type: 'emoji',\n // content -> 数组\n content: '😀 😃 😄 😁 😆 😅 😂 🤣 😊 😇 🙂 🙃 😉 😌 😍 😘 😗 😙 😚 😋 😛 😝 😜 🤓 😎 😏 😒 😞 😔 😟 😕 🙁 😣 😖 😫 😩 😢 😭 😤 😠 😡 😳 😱 😨 🤗 🤔 😶 😑 😬 🙄 😯 😴 😷 🤑 😈 🤡 💩 👻 💀 👀 👣'.split(\n /\\s/\n ),\n },\n {\n // tab 的标题\n title: '手势',\n // type -> 'emoji' / 'image'\n type: 'emoji',\n // content -> 数组\n content: '👐 🙌 👏 🤝 👍 👎 👊 ✊ 🤛 🤜 🤞 ✌️ 🤘 👌 👈 👉 👆 👇 ☝️ ✋ 🤚 🖐 🖖 👋 🤙 💪 🖕 ✍️ 🙏'.split(\n /\\s/\n ),\n },\n ],\n\n lineHeights: ['1', '1.15', '1.6', '2', '2.5', '3'],\n\n undoLimit: 20,\n\n indentation: '2em',\n\n showMenuTooltips: true,\n\n // 菜单栏tooltip为上标还是下标\n menuTooltipPosition: 'up',\n}\n","/**\n * @description 事件配置\n * @author wangfupeng\n */\n\nimport { EMPTY_FN } from '../utils/const'\n\nexport type TCatalog = {\n tag: string\n id: string\n text: string\n}\n\n/**\n * 提示信息\n * @param alertInfo alert info\n * @param alertType 错误提示类型\n * @param debugInfo debug info\n */\nfunction customAlert(alertInfo: string, alertType: string, debugInfo?: string): void {\n window.alert(alertInfo)\n if (debugInfo) {\n console.error('wangEditor: ' + debugInfo)\n }\n}\n\nexport default {\n onchangeTimeout: 200,\n\n onchange: null,\n onfocus: EMPTY_FN,\n onblur: EMPTY_FN,\n\n onCatalogChange: null,\n customAlert,\n}\n","/**\n * @description 粘贴,配置文件\n * @author wangfupeng\n */\n\nexport default {\n // 粘贴过滤样式,默认开启\n pasteFilterStyle: true,\n\n // 粘贴内容时,忽略图片。默认关闭\n pasteIgnoreImg: false,\n\n // 对粘贴的文字进行自定义处理,返回处理后的结果。编辑器会将处理后的结果粘贴到编辑区域中。\n // IE 暂时不支持\n pasteTextHandle: function (content: string): string {\n // content 即粘贴过来的内容html 或 纯文本),可进行自定义处理然后返回\n return content\n },\n}\n","/**\n * @description 命令配置项\n * @author wangfupeng\n */\n\nexport default {\n styleWithCSS: false, // 默认 false\n}\n","/**\n * @description 图片相关的配置\n * @author wangfupeng\n */\n\nimport Editor from '../editor/index'\nimport { EMPTY_FN } from '../utils/const'\nimport { ResType } from '../menus/img/upload-img'\n\nexport type UploadImageHooksType = {\n before?: (\n xhr: XMLHttpRequest,\n editor: Editor,\n files: File[]\n ) => { prevent: boolean; msg: string } | void\n success?: (xhr: XMLHttpRequest, editor: Editor, result: ResType) => void\n fail?: (xhr: XMLHttpRequest, editor: Editor, err: ResType | string) => void\n error?: (xhr: XMLHttpRequest, editor: Editor) => void\n timeout?: (xhr: XMLHttpRequest, editor: Editor) => void\n customInsert?: (\n inserImg: (this: Editor, src: string) => void,\n result: ResType,\n editor: Editor\n ) => void\n}\n\nexport default {\n // 网络图片校验的配置函数\n linkImgCheck: function (src: string, alt?: string, href?: string): string | boolean {\n return true\n },\n // 显示“插入网络图片”\n showLinkImg: true,\n\n // 显示“插入图片alt”\n showLinkImgAlt: true,\n\n // 显示“插入图片href”\n showLinkImgHref: true,\n\n // 插入图片成功之后的回调函数\n linkImgCallback: EMPTY_FN,\n\n // accept\n uploadImgAccept: ['jpg', 'jpeg', 'png', 'gif', 'bmp'],\n\n // 服务端地址\n uploadImgServer: '',\n\n // 使用 base64 存储图片\n uploadImgShowBase64: false,\n\n // 上传图片的最大体积,默认 5M\n uploadImgMaxSize: 5 * 1024 * 1024,\n\n // 一次最多上传多少个图片\n uploadImgMaxLength: 100,\n\n // 自定义上传图片的名称\n uploadFileName: '',\n\n // 上传图片自定义参数\n uploadImgParams: {},\n\n // 自定义参数拼接到 url 中\n uploadImgParamsWithUrl: false,\n\n // 上传图片自定义 header\n uploadImgHeaders: {},\n\n // 钩子函数\n uploadImgHooks: {},\n\n // 上传图片超时时间 ms\n uploadImgTimeout: 10 * 1000,\n\n // 跨域带 cookie\n withCredentials: false,\n\n // 自定义上传\n customUploadImg: null,\n\n // 从媒体库上传\n uploadImgFromMedia: null,\n}\n","export default {\n lang: 'zh-CN',\n languages: {\n 'zh-CN': {\n wangEditor: {\n 重置: '重置',\n 插入: '插入',\n 默认: '默认',\n 创建: '创建',\n 修改: '修改',\n 如: '如',\n 请输入正文: '请输入正文',\n menus: {\n title: {\n 标题: '标题',\n 加粗: '加粗',\n 字号: '字号',\n 字体: '字体',\n 斜体: '斜体',\n 下划线: '下划线',\n 删除线: '删除线',\n 缩进: '缩进',\n 行高: '行高',\n 文字颜色: '文字颜色',\n 背景色: '背景色',\n 链接: '链接',\n 序列: '序列',\n 对齐: '对齐',\n 引用: '引用',\n 表情: '表情',\n 图片: '图片',\n 视频: '视频',\n 表格: '表格',\n 代码: '代码',\n 分割线: '分割线',\n 恢复: '恢复',\n 撤销: '撤销',\n 全屏: '全屏',\n 取消全屏: '取消全屏',\n 待办事项: '待办事项',\n },\n dropListMenu: {\n 设置标题: '设置标题',\n 背景颜色: '背景颜色',\n 文字颜色: '文字颜色',\n 设置字号: '设置字号',\n 设置字体: '设置字体',\n 设置缩进: '设置缩进',\n 对齐方式: '对齐方式',\n 设置行高: '设置行高',\n 序列: '序列',\n head: {\n 正文: '正文',\n },\n indent: {\n 增加缩进: '增加缩进',\n 减少缩进: '减少缩进',\n },\n justify: {\n 靠左: '靠左',\n 居中: '居中',\n 靠右: '靠右',\n 两端: '两端',\n },\n list: {\n 无序列表: '无序列表',\n 有序列表: '有序列表',\n },\n },\n panelMenus: {\n emoticon: {\n 默认: '默认',\n 新浪: '新浪',\n emoji: 'emoji',\n 手势: '手势',\n },\n image: {\n 上传图片: '上传图片',\n 网络图片: '网络图片',\n 图片地址: '图片地址',\n 图片文字说明: '图片文字说明',\n 跳转链接: '跳转链接',\n },\n link: {\n 链接: '链接',\n 链接文字: '链接文字',\n 取消链接: '取消链接',\n 查看链接: '查看链接',\n },\n video: {\n 插入视频: '插入视频',\n 上传视频: '上传视频',\n },\n table: {\n 行: '行',\n 列: '列',\n 的: '的',\n 表格: '表格',\n 添加行: '添加行',\n 删除行: '删除行',\n 添加列: '添加列',\n 删除列: '删除列',\n 设置表头: '设置表头',\n 取消表头: '取消表头',\n 插入表格: '插入表格',\n 删除表格: '删除表格',\n },\n code: {\n 删除代码: '删除代码',\n 修改代码: '修改代码',\n 插入代码: '插入代码',\n },\n },\n },\n validate: {\n 张图片: '张图片',\n 大于: '大于',\n 图片链接: '图片链接',\n 不是图片: '不是图片',\n 返回结果: '返回结果',\n 上传图片超时: '上传图片超时',\n 上传图片错误: '上传图片错误',\n 上传图片失败: '上传图片失败',\n 插入图片错误: '插入图片错误',\n 一次最多上传: '一次最多上传',\n 下载链接失败: '下载链接失败',\n 图片验证未通过: '图片验证未通过',\n 服务器返回状态: '服务器返回状态',\n 上传图片返回结果错误: '上传图片返回结果错误',\n 请替换为支持的图片类型: '请替换为支持的图片类型',\n 您插入的网络图片无法识别: '您插入的网络图片无法识别',\n 您刚才插入的图片链接未通过编辑器校验: '您刚才插入的图片链接未通过编辑器校验',\n 插入视频错误: '插入视频错误',\n 视频链接: '视频链接',\n 不是视频: '不是视频',\n 视频验证未通过: '视频验证未通过',\n 个视频: '个视频',\n 上传视频超时: '上传视频超时',\n 上传视频错误: '上传视频错误',\n 上传视频失败: '上传视频失败',\n 上传视频返回结果错误: '上传视频返回结果错误',\n },\n },\n },\n en: {\n wangEditor: {\n 重置: 'reset',\n 插入: 'insert',\n 默认: 'default',\n 创建: 'create',\n 修改: 'edit',\n 如: 'like',\n 请输入正文: 'please enter the text',\n menus: {\n title: {\n 标题: 'head',\n 加粗: 'bold',\n 字号: 'font size',\n 字体: 'font family',\n 斜体: 'italic',\n 下划线: 'underline',\n 删除线: 'strikethrough',\n 缩进: 'indent',\n 行高: 'line heihgt',\n 文字颜色: 'font color',\n 背景色: 'background',\n 链接: 'link',\n 序列: 'numbered list',\n 对齐: 'align',\n 引用: 'quote',\n 表情: 'emoticons',\n 图片: 'image',\n 视频: 'media',\n 表格: 'table',\n 代码: 'code',\n 分割线: 'split line',\n 恢复: 'undo',\n 撤销: 'redo',\n 全屏: 'fullscreen',\n 取消全屏: 'cancel fullscreen',\n 待办事项: 'todo',\n },\n dropListMenu: {\n 设置标题: 'title',\n 背景颜色: 'background',\n 文字颜色: 'font color',\n 设置字号: 'font size',\n 设置字体: 'font family',\n 设置缩进: 'indent',\n 对齐方式: 'align',\n 设置行高: 'line heihgt',\n 序列: 'list',\n head: {\n 正文: 'text',\n },\n indent: {\n 增加缩进: 'indent',\n 减少缩进: 'outdent',\n },\n justify: {\n 靠左: 'left',\n 居中: 'center',\n 靠右: 'right',\n 两端: 'justify',\n },\n list: {\n 无序列表: 'unordered',\n 有序列表: 'ordered',\n },\n },\n panelMenus: {\n emoticon: {\n 表情: 'emoji',\n 手势: 'gesture',\n },\n image: {\n 上传图片: 'upload image',\n 网络图片: 'network image',\n 图片地址: 'image link',\n 图片文字说明: 'image alt',\n 跳转链接: 'hyperlink',\n },\n link: {\n 链接: 'link',\n 链接文字: 'link text',\n 取消链接: 'unlink',\n 查看链接: 'view links',\n },\n video: {\n 插入视频: 'insert video',\n 上传视频: 'upload local video',\n },\n table: {\n 行: 'rows',\n 列: 'columns',\n 的: ' ',\n 表格: 'table',\n 添加行: 'insert row',\n 删除行: 'delete row',\n 添加列: 'insert column',\n 删除列: 'delete column',\n 设置表头: 'set header',\n 取消表头: 'cancel header',\n 插入表格: 'insert table',\n 删除表格: 'delete table',\n },\n code: {\n 删除代码: 'delete code',\n 修改代码: 'edit code',\n 插入代码: 'insert code',\n },\n },\n },\n validate: {\n 张图片: 'images',\n 大于: 'greater than',\n 图片链接: 'image link',\n 不是图片: 'is not image',\n 返回结果: 'return results',\n 上传图片超时: 'upload image timeout',\n 上传图片错误: 'upload image error',\n 上传图片失败: 'upload image failed',\n 插入图片错误: 'insert image error',\n 一次最多上传: 'once most at upload',\n 下载链接失败: 'download link failed',\n 图片验证未通过: 'image validate failed',\n 服务器返回状态: 'server return status',\n 上传图片返回结果错误: 'upload image return results error',\n 请替换为支持的图片类型: 'please replace with a supported image type',\n 您插入的网络图片无法识别: 'the network picture you inserted is not recognized',\n 您刚才插入的图片链接未通过编辑器校验:\n 'the image link you just inserted did not pass the editor verification',\n 插入视频错误: 'insert video error',\n 视频链接: 'video link',\n 不是视频: 'is not video',\n 视频验证未通过: 'video validate failed',\n 个视频: 'videos',\n 上传视频超时: 'upload video timeout',\n 上传视频错误: 'upload video error',\n 上传视频失败: 'upload video failed',\n 上传视频返回结果错误: 'upload video return results error',\n },\n },\n },\n },\n}\n","/**\n * @description 历史记录 - 数据缓存的模式\n * @author fangzhicong\n */\n\nimport { UA } from '../utils/util'\n\n/**\n * 是否为兼容模式。返回 true 表示当前使用兼容(内容备份)模式,否则使用标准(差异备份)模式\n */\nfunction compatibleMode() {\n if (UA.isIE() || UA.isOldEdge) {\n return true\n }\n return false\n}\n\nexport default {\n compatibleMode,\n historyMaxSize: 30,\n}\n","/**\n * @description 视频相关的配置\n * @author hutianhao\n */\n\nimport Editor from '../editor/index'\nimport { EMPTY_FN } from '../utils/const'\nimport { ResType } from '../menus/video/upload-video'\n\nexport type UploadVideoHooksType = {\n before?: (\n xhr: XMLHttpRequest,\n editor: Editor,\n files: File[]\n ) => { prevent: boolean; msg: string } | void\n success?: (xhr: XMLHttpRequest, editor: Editor, result: ResType) => void\n fail?: (xhr: XMLHttpRequest, editor: Editor, err: ResType | string) => void\n error?: (xhr: XMLHttpRequest, editor: Editor) => void\n timeout?: (xhr: XMLHttpRequest, editor: Editor) => void\n customInsert?: (\n inserVideo: (this: Editor, src: string) => void,\n result: ResType,\n editor: Editor\n ) => void\n}\n\nexport default {\n // 插入网络视频前的回调函数\n onlineVideoCheck: (video: string): string | boolean => {\n return true\n },\n\n // 插入网络视频成功之后的回调函数\n onlineVideoCallback: EMPTY_FN,\n\n // 显示“插入视频”\n showLinkVideo: true,\n\n // accept\n uploadVideoAccept: ['mp4'],\n\n // 服务端地址\n uploadVideoServer: '',\n\n // 上传视频的最大体积,默认 1024M\n uploadVideoMaxSize: 1 * 1024 * 1024 * 1024,\n\n // 一次最多上传多少个视频\n // uploadVideoMaxLength: 2,\n\n // 自定义上传视频的名称\n uploadVideoName: '',\n\n // 上传视频自定义参数\n uploadVideoParams: {},\n\n // 自定义参数拼接到 url 中\n uploadVideoParamsWithUrl: false,\n\n // 上传视频自定义 header\n uploadVideoHeaders: {},\n\n // 钩子函数\n uploadVideoHooks: {},\n\n // 上传视频超时时间 ms 默认2个小时\n uploadVideoTimeout: 1000 * 60 * 60 * 2,\n\n // 跨域带 cookie\n withVideoCredentials: false,\n\n // 自定义上传\n customUploadVideo: null,\n\n // 自定义插入视频\n customInsertVideo: null,\n}\n","/**\n * @description selection range API\n * @author wangfupeng\n */\nimport $, { DomElement } from '../utils/dom-core'\nimport { UA } from '../utils/util'\nimport Editor from './index'\nimport { EMPTY_P } from '../utils/const'\n\nclass SelectionAndRange {\n public editor: Editor\n private _currentRange: Range | null | undefined = null\n\n constructor(editor: Editor) {\n this.editor = editor\n }\n\n /**\n * 获取当前 range\n */\n public getRange(): Range | null | undefined {\n return this._currentRange\n }\n\n /**\n * 保存选区范围\n * @param _range 选区范围\n */\n public saveRange(_range?: Range): void {\n if (_range) {\n // 保存已有选区\n this._currentRange = _range\n return\n }\n\n // 获取当前的选区\n const selection = window.getSelection() as Selection\n if (selection.rangeCount === 0) {\n return\n }\n const range = selection.getRangeAt(0)\n\n // 获取选区范围的 DOM 元素\n const $containerElem = this.getSelectionContainerElem(range)\n if (!$containerElem?.length) {\n // 当 选区范围内没有 DOM元素 则抛出\n return\n }\n if (\n $containerElem.attr('contenteditable') === 'false' ||\n $containerElem.parentUntil('[contenteditable=false]')\n ) {\n // 这里大体意义上就是个保险\n // 确保 编辑区域 的 contenteditable属性 的值为 true\n return\n }\n\n const editor = this.editor\n const $textElem = editor.$textElem\n if ($textElem.isContain($containerElem)) {\n if ($textElem.elems[0] === $containerElem.elems[0]) {\n if ($textElem.html().trim() === EMPTY_P) {\n const $children = $textElem.children()\n const $last = $children?.last()\n editor.selection.createRangeByElem($last as DomElement, true, true)\n editor.selection.restoreSelection()\n }\n }\n // 是编辑内容之内的\n this._currentRange = range\n }\n }\n\n /**\n * 折叠选区范围\n * @param toStart true 开始位置false 结束位置\n */\n public collapseRange(toStart: boolean = false): void {\n const range = this._currentRange\n if (range) {\n range.collapse(toStart)\n }\n }\n\n /**\n * 获取选区范围内的文字\n */\n public getSelectionText(): string {\n const range = this._currentRange\n if (range) {\n return range.toString()\n } else {\n return ''\n }\n }\n\n /**\n * 获取选区范围的 DOM 元素\n * @param range 选区范围\n */\n public getSelectionContainerElem(range?: Range): DomElement | undefined {\n let r: Range | null | undefined\n r = range || this._currentRange\n let elem: Node\n if (r) {\n elem = r.commonAncestorContainer\n return $(elem.nodeType === 1 ? elem : elem.parentNode)\n }\n }\n\n /**\n * 选区范围开始的 DOM 元素\n * @param range 选区范围\n */\n public getSelectionStartElem(range?: Range): DomElement | undefined {\n let r: Range | null | undefined\n r = range || this._currentRange\n let elem: Node\n if (r) {\n elem = r.startContainer\n return $(elem.nodeType === 1 ? elem : elem.parentNode)\n }\n }\n\n /**\n * 选区范围结束的 DOM 元素\n * @param range 选区范围\n */\n public getSelectionEndElem(range?: Range): DomElement | undefined {\n let r: Range | null | undefined\n r = range || this._currentRange\n let elem: Node\n if (r) {\n elem = r.endContainer\n return $(elem.nodeType === 1 ? elem : elem.parentNode)\n }\n }\n\n /**\n * 选区是否为空(没有选择文字)\n */\n public isSelectionEmpty(): boolean {\n const range = this._currentRange\n if (range && range.startContainer) {\n if (range.startContainer === range.endContainer) {\n if (range.startOffset === range.endOffset) {\n return true\n }\n }\n }\n return false\n }\n\n /**\n * 恢复选区范围\n */\n public restoreSelection(): void {\n const selection = window.getSelection()\n const r = this._currentRange\n if (selection && r) {\n selection.removeAllRanges()\n selection.addRange(r)\n }\n }\n\n /**\n * 创建一个空白(即 &#8203 字符)选区\n */\n public createEmptyRange(): void {\n const editor = this.editor\n const range = this.getRange()\n let $elem: DomElement\n\n if (!range) {\n // 当前无 range\n return\n }\n if (!this.isSelectionEmpty()) {\n // 当前选区必须没有内容才可以,有内容就直接 return\n return\n }\n\n try {\n // 目前只支持 webkit 内核\n if (UA.isWebkit()) {\n // 插入 &#8203\n editor.cmd.do('insertHTML', '&#8203;')\n // 修改 offset 位置\n range.setEnd(range.endContainer, range.endOffset + 1)\n // 存储\n this.saveRange(range)\n } else {\n $elem = $('<strong>&#8203;</strong>')\n editor.cmd.do('insertElem', $elem)\n this.createRangeByElem($elem, true)\n }\n } catch (ex) {\n // 部分情况下会报错,兼容一下\n }\n }\n /**\n * 重新设置选区\n * @param startDom 选区开始的元素\n * @param endDom 选区结束的元素\n */\n public createRangeByElems(startDom: Node, endDom: Node): void {\n let selection = window.getSelection ? window.getSelection() : document.getSelection()\n //清除所有的选区\n selection?.removeAllRanges()\n const range = document.createRange()\n range.setStart(startDom, 0)\n // 设置多行标签之后第二个参数会被h标签内的b、font标签等影响range范围的选取\n range.setEnd(endDom, endDom.childNodes.length || 1)\n // 保存设置好的选区\n this.saveRange(range)\n //恢复选区\n this.restoreSelection()\n }\n /**\n * 根据 DOM 元素设置选区\n * @param $elem DOM 元素\n * @param toStart true 开始位置false 结束位置\n * @param isContent 是否选中 $elem 的内容\n */\n public createRangeByElem($elem: DomElement, toStart?: boolean, isContent?: boolean): void {\n if (!$elem.length) {\n return\n }\n\n const elem = $elem.elems[0]\n const range = document.createRange()\n\n if (isContent) {\n range.selectNodeContents(elem)\n } else {\n // 如果用户没有传入 isContent 参数,那就默认为 false\n range.selectNode(elem)\n }\n\n if (toStart != null) {\n // 传入了 toStart 参数,折叠选区。如果没传入 toStart 参数,则忽略这一步\n range.collapse(toStart)\n\n if (!toStart) {\n this.saveRange(range)\n this.editor.selection.moveCursor(elem)\n }\n }\n\n // 存储 range\n this.saveRange(range)\n }\n\n /**\n * 获取 当前 选取范围的 顶级(段落) 元素\n * @param $editor\n */\n public getSelectionRangeTopNodes(): DomElement[] {\n // 清空,防止叠加元素\n let $nodeList: DomElement[]\n\n const $startElem = this.getSelectionStartElem()?.getNodeTop(this.editor)\n const $endElem = this.getSelectionEndElem()?.getNodeTop(this.editor)\n\n $nodeList = this.recordSelectionNodes($($startElem), $($endElem))\n\n return $nodeList\n }\n\n /**\n * 移动光标位置,默认情况下在尾部\n * 有一个特殊情况是firefox下的文本节点会自动补充一个br元素会导致自动换行\n * 所以默认情况下在firefox下的文本节点会自动移动到br前面\n * @param {Node} node 元素节点\n * @param {number} position 光标的位置\n */\n public moveCursor(node: Node, position?: number): void {\n const range = this.getRange()\n //对文本节点特殊处理\n let len: number =\n node.nodeType === 3 ? (node.nodeValue?.length as number) : node.childNodes.length\n if ((UA.isFirefox || UA.isIE()) && len !== 0) {\n // firefox下在节点为文本节点和节点最后一个元素为文本节点的情况下\n if (node.nodeType === 3 || node.childNodes[len - 1].nodeName === 'BR') {\n len = len - 1\n }\n }\n let pos: number = position ?? len\n if (!range) {\n return\n }\n if (node) {\n range.setStart(node, pos)\n range.setEnd(node, pos)\n this.restoreSelection()\n }\n }\n\n /**\n * 获取光标在当前选区的位置\n */\n public getCursorPos(): number | undefined {\n const selection = window.getSelection()\n\n return selection?.anchorOffset\n }\n\n /**\n * 清除当前选区的Range,notice:不影响已保存的Range\n */\n public clearWindowSelectionRange(): void {\n const selection = window.getSelection()\n if (selection) {\n selection.removeAllRanges()\n }\n }\n\n /**\n * 记录节点 - 从选区开始节点开始 一直到匹配到选区结束节点为止\n * @param $node 节点\n */\n public recordSelectionNodes($node: DomElement, $endElem: DomElement): DomElement[] {\n let $list: DomElement[] = []\n let isEnd = true\n /** \n @author:lw\n @description 解决ctrl+a全选报错的bug $elem.getNodeName()可能会触发$elem[0]未定义\n **/\n try {\n let $NODE: DomElement = $node\n const $textElem = this.editor.$textElem\n // $NODE元素为空时不需要进行循环\n while (isEnd) {\n const $elem = $NODE?.getNodeTop(this.editor)\n if ($elem.getNodeName() === 'BODY') isEnd = false // 兜底\n if ($elem.length > 0) {\n $list.push($($NODE))\n // 两个边界情况:\n // 1. 当前元素就是我们要找的末尾元素\n // 2. 当前元素已经是编辑区顶级元素否则会找到编辑区的兄弟节点比如placeholder元素\n if ($endElem?.equal($elem) || $textElem.equal($elem)) {\n isEnd = false\n } else {\n $NODE = $elem.getNextSibling()\n }\n }\n }\n } catch (e) {\n isEnd = false\n }\n return $list\n }\n\n /**\n * 将当前 range 设置到 node 元素并初始化位置\n * 解决编辑器内容为空时,菜单不生效的问题\n * @param node 元素节点\n */\n public setRangeToElem(node: Node): void {\n const range = this.getRange()\n range?.setStart(node, 0)\n range?.setEnd(node, 0)\n }\n}\n\nexport default SelectionAndRange\n","/**\n * @description 封装 document.execCommand\n * @author wangfupeng\n */\n\nimport $, { DomElement } from '../utils/dom-core'\nimport Editor from './index'\n\nclass Command {\n public editor: Editor\n\n constructor(editor: Editor) {\n this.editor = editor\n }\n\n /**\n * 执行富文本操作的命令\n * @param name name\n * @param value value\n */\n public do(name: string, value?: string | DomElement): void {\n const editor = this.editor\n\n if (editor.config.styleWithCSS) {\n document.execCommand('styleWithCSS', false, 'true')\n }\n\n const selection = editor.selection\n\n // 如果无选区,忽略\n if (!selection.getRange()) {\n return\n }\n\n // 恢复选取\n selection.restoreSelection()\n\n // 执行\n switch (name) {\n case 'insertHTML':\n this.insertHTML(value as string)\n break\n case 'insertElem':\n this.insertElem(value as DomElement)\n break\n default:\n // 默认 command\n this.execCommand(name, value as string)\n break\n }\n\n // 修改菜单状态\n editor.menus.changeActive()\n\n // 最后,恢复选取保证光标在原来的位置闪烁\n selection.saveRange()\n selection.restoreSelection()\n }\n\n /**\n * 插入 html\n * @param html html 字符串\n */\n private insertHTML(html: string): void {\n const editor = this.editor\n const range = editor.selection.getRange()\n if (range == null) return\n\n if (this.queryCommandSupported('insertHTML')) {\n // W3C\n this.execCommand('insertHTML', html)\n } else if (range.insertNode) {\n // IE\n range.deleteContents()\n if ($(html).elems.length > 0) {\n range.insertNode($(html).elems[0])\n } else {\n let newNode = document.createElement('p')\n newNode.appendChild(document.createTextNode(html))\n range.insertNode(newNode)\n }\n editor.selection.collapseRange()\n }\n // else if (range.pasteHTML) {\n // // IE <= 10\n // range.pasteHTML(html)\n // }\n }\n\n /**\n * 插入 DOM 元素\n * @param $elem DOM 元素\n */\n private insertElem($elem: DomElement): void {\n const editor = this.editor\n const range = editor.selection.getRange()\n if (range == null) return\n\n if (range.insertNode) {\n range.deleteContents()\n range.insertNode($elem.elems[0])\n }\n }\n\n /**\n * 执行 document.execCommand\n * @param name name\n * @param value value\n */\n private execCommand(name: string, value: string): void {\n document.execCommand(name, false, value)\n }\n\n /**\n * 执行 document.queryCommandValue\n * @param name name\n */\n public queryCommandValue(name: string): string {\n return document.queryCommandValue(name)\n }\n\n /**\n * 执行 document.queryCommandState\n * @param name name\n */\n public queryCommandState(name: string): boolean {\n return document.queryCommandState(name)\n }\n\n /**\n * 执行 document.queryCommandSupported\n * @param name name\n */\n public queryCommandSupported(name: string): boolean {\n return document.queryCommandSupported(name)\n }\n}\n\nexport default Command\n","/**\n * @description 编辑区域,入口文件\n * @author wangfupeng\n */\n\nimport $, { DomElement } from '../utils/dom-core'\nimport Editor from '../editor/index'\nimport initEventHooks from './event-hooks/index'\nimport { UA, throttle } from '../utils/util'\nimport getChildrenJSON, { NodeListType } from './getChildrenJSON'\nimport getHtmlByNodeList from './getHtmlByNodeList'\nimport { EMPTY_P, EMPTY_P_LAST_REGEX, EMPTY_P_REGEX } from '../utils/const'\n\n/** 按键函数 */\ntype KeyBoardHandler = (event: KeyboardEvent) => unknown\n/** 普通事件回调 */\ntype EventHandler = (event?: Event) => unknown\n// 各个事件钩子函数\ntype TextEventHooks = {\n onBlurEvents: EventHandler[]\n changeEvents: (() => void)[] // 内容修改时\n dropEvents: ((event: DragEvent) => unknown)[]\n clickEvents: EventHandler[]\n keydownEvents: KeyBoardHandler[]\n keyupEvents: KeyBoardHandler[]\n /** tab 键keyCode === Up 时 */\n tabUpEvents: KeyBoardHandler[]\n /** tab 键keyCode === 9Down 时 */\n tabDownEvents: KeyBoardHandler[]\n /** enter 键keyCode === 13up 时 */\n enterUpEvents: KeyBoardHandler[]\n /** enter 键keyCode === 13down 时 */\n enterDownEvents: KeyBoardHandler[]\n /** 删除键keyCode === 8up 时 */\n deleteUpEvents: KeyBoardHandler[]\n /** 删除键keyCode === 8down 时 */\n deleteDownEvents: KeyBoardHandler[]\n /** 粘贴事件 */\n pasteEvents: ((e: ClipboardEvent) => void)[]\n /** 点击链接事件 */\n linkClickEvents: ((e: DomElement) => void)[]\n /** 点击代码事件 */\n codeClickEvents: ((e: DomElement) => void)[]\n /** 编辑区域滑动事件 */\n textScrollEvents: EventHandler[]\n /** 菜单栏被点击 */\n toolbarClickEvents: EventHandler[]\n /** 图片被点击事件 */\n imgClickEvents: ((e: DomElement) => void)[]\n /** 图片拖拽MouseDown */\n imgDragBarMouseDownEvents: (() => void)[]\n /** 表格点击 */\n tableClickEvents: (($dom: DomElement, e: MouseEvent) => void)[]\n /** 每个菜单被点击时,按理说这个不属于 txt 的,先暂时在这放着吧 */\n menuClickEvents: (() => void)[]\n /** droplist 菜单悬浮事件。暂时放这里 */\n dropListMenuHoverEvents: (() => void)[]\n /** 点击分割线时 */\n splitLineEvents: ((e: DomElement) => void)[]\n /** 视频点击事件 */\n videoClickEvents: ((e: DomElement) => void)[]\n}\n\nclass Text {\n public editor: Editor\n public eventHooks: TextEventHooks // Text 各个事件的钩子函数,如 keyup 时要执行哪些函数\n\n constructor(editor: Editor) {\n this.editor = editor\n\n this.eventHooks = {\n onBlurEvents: [],\n changeEvents: [],\n dropEvents: [],\n clickEvents: [],\n keydownEvents: [],\n keyupEvents: [],\n tabUpEvents: [],\n tabDownEvents: [],\n enterUpEvents: [],\n enterDownEvents: [],\n deleteUpEvents: [],\n deleteDownEvents: [],\n pasteEvents: [],\n linkClickEvents: [],\n codeClickEvents: [],\n textScrollEvents: [],\n toolbarClickEvents: [],\n imgClickEvents: [],\n imgDragBarMouseDownEvents: [],\n tableClickEvents: [],\n menuClickEvents: [],\n dropListMenuHoverEvents: [],\n splitLineEvents: [],\n videoClickEvents: [],\n }\n }\n\n /**\n * 初始化\n */\n public init(): void {\n // 实时保存选取范围\n this._saveRange()\n\n // 绑定事件\n this._bindEventHooks()\n\n // 初始化 text 事件钩子函数\n initEventHooks(this)\n }\n\n /**\n * 切换placeholder\n */\n public togglePlaceholder(): void {\n const html = this.html()\n const $placeholder = this.editor.$textContainerElem.find('.placeholder')\n $placeholder.hide()\n if (this.editor.isComposing) return\n if (!html || html === ' ') $placeholder.show()\n }\n\n /**\n * 清空内容\n */\n public clear(): void {\n this.html(EMPTY_P)\n }\n\n /**\n * 设置/获取 html\n * @param val html 字符串\n */\n public html(val?: string): void | string {\n const editor = this.editor\n const $textElem = editor.$textElem\n\n // 没有 val ,则是获取 html\n if (val == null) {\n let html = $textElem.html()\n // 未选中任何内容的时候点击“加粗”或者“斜体”等按钮,就得需要一个空的占位符 &#8203 ,这里替换掉\n html = html.replace(/\\u200b/gm, '')\n // 去掉空行\n html = html.replace(/<p><\\/p>/gim, '')\n // 去掉最后的 空标签\n html = html.replace(EMPTY_P_LAST_REGEX, '')\n // 为了避免用户在最后生成的EMPTY_P标签中编辑数据, 最后产生多余标签, 去除所有p标签上的data-we-empty-p属性\n html = html.replace(EMPTY_P_REGEX, '<p>')\n\n /**\n * 这里的代码为了处理火狐多余的空行标签,但是强制删除空行标签会带来其他问题\n * html()方法返回的的值,EMPTY_P中pr会被删除,只留下<p>,点不进去,从而产生垃圾数据\n * 目前在末位有多个空行的情况下执行撤销重做操作,会产生一种不记录末尾空行的错觉\n * 暂时注释, 等待进一步的兼容处理\n */\n // html = html.replace(/><br>(?!<)/gi, '>') // 过滤 <p><br>内容</p> 中的br\n // html = html.replace(/(?!>)<br></gi, '<') // 过滤 <p>内容<br></p> 中的br\n\n /**\n * pre标签格式化\n * html()方法理论上应当输出纯净的代码文本,但是对于是否解析html标签还没有良好的判断\n * 如果去除hljs的标签,在解析状态下回显,会造成显示错误并且无法再通过hljs方法渲染\n * 暂且其弃用\n */\n // html = formatCodeHtml(editor, html)\n\n // 将没有自闭和的标签过滤为自闭和\n const selfCloseHtmls: RegExpMatchArray | null = html.match(/<(img|br|hr|input)[^>]*>/gi)\n if (selfCloseHtmls !== null) {\n selfCloseHtmls.forEach(item => {\n if (!item.match(/\\/>/)) {\n html = html.replace(item, item.substring(0, item.length - 1) + '/>')\n }\n })\n }\n return html\n }\n\n // 有 val ,则是设置 html\n val = val.trim()\n if (val === '') {\n val = EMPTY_P\n }\n if (val.indexOf('<') !== 0) {\n // 内容用 p 标签包裹\n val = `<p>${val}</p>`\n }\n $textElem.html(val)\n\n // 初始化选区,将光标定位到内容尾部\n editor.initSelection()\n }\n\n /**\n * 将json设置成html至编辑器\n * @param nodeList json格式\n */\n public setJSON(nodeList: NodeListType): void {\n const html = getHtmlByNodeList(nodeList).children()\n const editor = this.editor\n const $textElem = editor.$textElem\n // 没有获取到元素的情况\n if (!html) return\n // 替换文本节点下全部子节点\n $textElem.replaceChildAll(html)\n }\n\n /**\n * 获取 json 格式的数据\n */\n public getJSON(): NodeListType {\n const editor = this.editor\n const $textElem = editor.$textElem\n return getChildrenJSON($textElem)\n }\n\n /**\n * 设置 字符串内容\n * @param val text 字符串\n */\n public text(val: string): void\n /**\n * 获取 字符串内容\n */\n public text(): string\n public text(val?: string): void | string {\n const editor = this.editor\n const $textElem = editor.$textElem\n\n // 没有 val ,是获取 text\n if (val == null) {\n let text = $textElem.text()\n // 未选中任何内容的时候点击“加粗”或者“斜体”等按钮,就得需要一个空的占位符 &#8203 ,这里替换掉\n text = text.replace(/\\u200b/gm, '')\n return text\n }\n\n // 有 val ,则是设置 text\n $textElem.text(`<p>${val}</p>`)\n\n // 初始化选区,将光标定位到内容尾部\n editor.initSelection()\n }\n\n /**\n * 追加 html 内容\n * @param html html 字符串\n */\n public append(html: string): void {\n const editor = this.editor\n if (html.indexOf('<') !== 0) {\n // 普通字符串,用 <p> 包裹\n html = `<p>${html}</p>`\n }\n this.html(this.html() + html)\n // 初始化选区,将光标定位到内容尾部\n editor.initSelection()\n }\n\n /**\n * 每一步操作,都实时保存选区范围\n */\n private _saveRange(): void {\n const editor = this.editor\n const $textElem = editor.$textElem\n const $document = $(document)\n\n // 保存当前的选区\n function saveRange() {\n // 随时保存选区\n editor.selection.saveRange()\n // 更新按钮 active 状态\n editor.menus.changeActive()\n }\n\n // 按键后保存\n $textElem.on('keyup', saveRange)\n\n // 点击后保存,为了避免被多次执行而导致造成浪费,这里对 click 使用一次性绑定\n function onceClickSaveRange() {\n saveRange()\n $textElem.off('click', onceClickSaveRange)\n }\n $textElem.on('click', onceClickSaveRange)\n\n function handleMouseUp() {\n // 在编辑器区域之外完成抬起,保存此时编辑区内的新选区,取消此时鼠标抬起事件\n saveRange()\n $document.off('mouseup', handleMouseUp)\n }\n function listenMouseLeave() {\n // 当鼠标移动到外面,要监听鼠标抬起操作\n $document.on('mouseup', handleMouseUp)\n // 首次移出时即接触leave监听防止用户不断移入移出多次注册handleMouseUp\n $textElem.off('mouseleave', listenMouseLeave)\n }\n $textElem.on('mousedown', () => {\n // mousedown 状态下,要坚听鼠标滑动到编辑区域外面\n $textElem.on('mouseleave', listenMouseLeave)\n })\n\n $textElem.on('mouseup', (e: MouseEvent) => {\n // 记得移除$textElem的mouseleave事件, 避免内存泄露\n $textElem.off('mouseleave', listenMouseLeave)\n // fix避免当选中一段文字之后再次点击文字中间位置无法更新selection问题。issue#3096\n setTimeout(() => {\n const selection = editor.selection\n const range = selection.getRange()\n if (range === null) return\n saveRange()\n }, 0)\n })\n }\n\n /**\n * 绑定事件,事件会触发钩子函数\n */\n private _bindEventHooks(): void {\n const editor = this.editor\n const $textElem = editor.$textElem\n const eventHooks = this.eventHooks\n\n // click hooks\n $textElem.on('click', (e: Event) => {\n const clickEvents = eventHooks.clickEvents\n clickEvents.forEach(fn => fn(e))\n })\n\n // enter 键 up 时的 hooks\n $textElem.on('keyup', (e: KeyboardEvent) => {\n if (e.keyCode !== 13) return\n const enterUpEvents = eventHooks.enterUpEvents\n enterUpEvents.forEach(fn => fn(e))\n })\n\n // 键盘 up 时的 hooks\n $textElem.on('keyup', (e: KeyboardEvent) => {\n const keyupEvents = eventHooks.keyupEvents\n keyupEvents.forEach(fn => fn(e))\n })\n\n // 键盘 down 时的 hooks\n $textElem.on('keydown', (e: KeyboardEvent) => {\n const keydownEvents = eventHooks.keydownEvents\n keydownEvents.forEach(fn => fn(e))\n })\n\n // delete 键 up 时 hooks\n $textElem.on('keyup', (e: KeyboardEvent) => {\n if (e.keyCode !== 8 && e.keyCode !== 46) return\n const deleteUpEvents = eventHooks.deleteUpEvents\n deleteUpEvents.forEach(fn => fn(e))\n })\n\n // delete 键 down 时 hooks\n $textElem.on('keydown', (e: KeyboardEvent) => {\n if (e.keyCode !== 8 && e.keyCode !== 46) return\n const deleteDownEvents = eventHooks.deleteDownEvents\n deleteDownEvents.forEach(fn => fn(e))\n })\n\n // 粘贴\n $textElem.on('paste', (e: ClipboardEvent) => {\n if (UA.isIE()) return // IE 不支持\n\n // 阻止默认行为,使用 execCommand 的粘贴命令\n e.preventDefault()\n\n const pasteEvents = eventHooks.pasteEvents\n pasteEvents.forEach(fn => fn(e))\n })\n\n // 撤销/恢复 快捷键\n $textElem.on('keydown', (e: KeyboardEvent) => {\n if (\n // 编辑器处于聚焦状态下(多编辑器实例) || 当前处于兼容模式(兼容模式撤销/恢复后不聚焦,所以直接过,但会造成多编辑器同时撤销/恢复)\n (editor.isFocus || editor.isCompatibleMode) &&\n (e.ctrlKey || e.metaKey) &&\n e.keyCode === 90\n ) {\n // 取消默认行为\n e.preventDefault()\n // 执行事件\n if (e.shiftKey) {\n // 恢复\n editor.history.restore()\n } else {\n // 撤销\n editor.history.revoke()\n }\n }\n })\n\n // tab up\n $textElem.on('keyup', (e: KeyboardEvent) => {\n if (e.keyCode !== 9) return\n e.preventDefault()\n const tabUpEvents = eventHooks.tabUpEvents\n tabUpEvents.forEach(fn => fn(e))\n })\n\n // tab down\n $textElem.on('keydown', (e: KeyboardEvent) => {\n if (e.keyCode !== 9) return\n e.preventDefault()\n const tabDownEvents = eventHooks.tabDownEvents\n tabDownEvents.forEach(fn => fn(e))\n })\n\n // 文本编辑区域 滚动时触发\n $textElem.on(\n 'scroll',\n // 使用节流\n throttle((e: Event) => {\n const textScrollEvents = eventHooks.textScrollEvents\n textScrollEvents.forEach(fn => fn(e))\n }, 100)\n )\n\n // 拖拽相关的事件\n function preventDefault(e: Event) {\n // 禁用 document 拖拽事件\n e.preventDefault()\n }\n\n $(document)\n .on('dragleave', preventDefault)\n .on('drop', preventDefault)\n .on('dragenter', preventDefault)\n .on('dragover', preventDefault)\n // 全局事件在编辑器实例销毁的时候进行解绑\n editor.beforeDestroy(function () {\n $(document)\n .off('dragleave', preventDefault)\n .off('drop', preventDefault)\n .off('dragenter', preventDefault)\n .off('dragover', preventDefault)\n })\n\n $textElem.on('drop', (e: DragEvent) => {\n e.preventDefault()\n const events = eventHooks.dropEvents\n events.forEach(fn => fn(e))\n })\n\n // link click\n $textElem.on('click', (e: Event) => {\n // 存储链接元素\n let $link: DomElement | null = null\n\n const target = e.target as HTMLElement\n const $target = $(target)\n if ($target.getNodeName() === 'A') {\n // 当前点击的就是一个链接\n $link = $target\n } else {\n // 否则,向父节点中寻找链接\n const $parent = $target.parentUntil('a')\n if ($parent != null) {\n // 找到了\n $link = $parent\n }\n }\n\n if (!$link) return // 没有点击链接,则返回\n\n const linkClickEvents = eventHooks.linkClickEvents\n linkClickEvents.forEach(fn => fn($link as DomElement))\n })\n\n // img click\n $textElem.on('click', (e: Event) => {\n // 存储图片元素\n let $img: DomElement | null = null\n\n const target = e.target as HTMLElement\n const $target = $(target)\n\n //处理图片点击 去除掉emoji图片的情况\n if ($target.getNodeName() === 'IMG' && !$target.elems[0].getAttribute('data-emoji')) {\n // 当前点击的就是img\n e.stopPropagation()\n $img = $target\n }\n if (!$img) return // 没有点击图片,则返回\n\n const imgClickEvents = eventHooks.imgClickEvents\n imgClickEvents.forEach(fn => fn($img as DomElement))\n })\n\n // code click\n $textElem.on('click', (e: Event) => {\n // 存储代码元素\n let $code: DomElement | null = null\n\n const target = e.target as HTMLElement\n const $target = $(target)\n if ($target.getNodeName() === 'PRE') {\n // 当前点击的就是一个链接\n $code = $target\n } else {\n // 否则,向父节点中寻找链接\n const $parent = $target.parentUntil('pre')\n if ($parent !== null) {\n // 找到了\n $code = $parent\n }\n }\n\n if (!$code) return\n\n const codeClickEvents = eventHooks.codeClickEvents\n codeClickEvents.forEach(fn => fn($code as DomElement))\n })\n\n // splitLine click\n $textElem.on('click', (e: Event) => {\n // 存储分割线元素\n let $splitLine: DomElement | null = null\n\n const target = e.target as HTMLElement\n const $target = $(target)\n // 判断当前点击元素\n if ($target.getNodeName() === 'HR') {\n $splitLine = $target\n } else {\n $target == null\n }\n\n if (!$splitLine) return // 没有点击分割线,则返回\n // 设置、恢复选区\n editor.selection.createRangeByElem($splitLine)\n editor.selection.restoreSelection()\n const splitLineClickEvents = eventHooks.splitLineEvents\n splitLineClickEvents.forEach(fn => fn($splitLine as DomElement))\n })\n\n // 菜单栏被点击\n editor.$toolbarElem.on('click', (e: Event) => {\n const toolbarClickEvents = eventHooks.toolbarClickEvents\n toolbarClickEvents.forEach(fn => fn(e))\n })\n\n //mousedown事件\n editor.$textContainerElem.on('mousedown', (e: MouseEvent) => {\n const target = e.target as HTMLElement\n const $target = $(target)\n if ($target.hasClass('w-e-img-drag-rb')) {\n // 点击的元素,是图片拖拽调整大小的 bar\n const imgDragBarMouseDownEvents = eventHooks.imgDragBarMouseDownEvents\n imgDragBarMouseDownEvents.forEach(fn => fn())\n }\n })\n\n //table click\n $textElem.on('click', (e: MouseEvent) => {\n // 存储元素\n let $dom: DomElement | null = null\n\n const target = e.target as HTMLElement\n\n //获取最祖父元素\n $dom = $(target).parentUntilEditor('TABLE', editor, target)\n\n // 没有table范围内则返回\n if (!$dom) return\n\n const tableClickEvents = eventHooks.tableClickEvents\n tableClickEvents.forEach(fn => fn($dom as DomElement, e))\n })\n\n // enter 键 down\n $textElem.on('keydown', (e: KeyboardEvent) => {\n if (e.keyCode !== 13) return\n const enterDownEvents = eventHooks.enterDownEvents\n enterDownEvents.forEach(fn => fn(e))\n })\n\n // 视频 click\n $textElem.on('click', (e: Event) => {\n // 存储视频\n let $video: DomElement | null = null\n\n const target = e.target as HTMLElement\n const $target = $(target)\n\n //处理视频点击 简单的video 标签\n if ($target.getNodeName() === 'VIDEO') {\n // 当前点击的就是视频\n e.stopPropagation()\n $video = $target\n }\n\n if (!$video) return // 没有点击视频,则返回\n\n const videoClickEvents = eventHooks.videoClickEvents\n videoClickEvents.forEach(fn => fn($video as DomElement))\n })\n }\n}\n\nexport default Text\n","var parent = require('../../es/instance/find');\n\nmodule.exports = parent;\n","var find = require('../array/virtual/find');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.find;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.find) ? find : own;\n};\n","require('../../../modules/es.array.find');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').find;\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","/**\n * @description Text 事件钩子函数。Text 公共的,不是某个菜单独有的\n * @wangfupeng\n */\n\nimport Text from '../index'\nimport enterToCreateP from './enter-to-create-p'\nimport deleteToKeepP, { cutToKeepP } from './del-to-keep-p'\nimport tabToSpan from './tab-to-space'\nimport pasteTextHtml from './paste-text-html'\nimport imgClickActive from './img-click-active'\n\n/**\n * 初始化 text 事件钩子函数\n * @param text text 实例\n */\nfunction initTextHooks(text: Text): void {\n const editor = text.editor\n const eventHooks = text.eventHooks\n\n // 回车时,保证生成的是 <p> 标签\n enterToCreateP(editor, eventHooks.enterUpEvents, eventHooks.enterDownEvents)\n\n // 删除时,保留 EMPTY_P\n deleteToKeepP(editor, eventHooks.deleteUpEvents, eventHooks.deleteDownEvents)\n\n // 剪切时, 保留p\n cutToKeepP(editor, eventHooks.keyupEvents)\n\n // tab 转换为空格\n tabToSpan(editor, eventHooks.tabDownEvents)\n\n // 粘贴 text html\n pasteTextHtml(editor, eventHooks.pasteEvents)\n\n // img click active\n imgClickActive(editor, eventHooks.imgClickEvents)\n}\n\nexport default initTextHooks\n","/**\n * @description 回车时,保证生成的是 <p> 标签\n * @author wangfupeng\n */\n\nimport Editor from '../../editor/index'\nimport { EMPTY_P } from '../../utils/const'\nimport $, { DomElement } from '../../utils/dom-core'\n\n/**\n * 回车时,保证生成的是 <p> 标签\n * @param editor 编辑器实例\n * @param enterUpEvents enter 键 up 时的 hooks\n * @param enterDownEvents enter 键 down 时的 hooks\n */\nfunction enterToCreateP(editor: Editor, enterUpEvents: Function[], enterDownEvents: Function[]) {\n function insertEmptyP($selectionElem: DomElement) {\n const $p = $(EMPTY_P)\n $p.insertBefore($selectionElem)\n if ($selectionElem.html().indexOf('<img') >= 0) {\n // 有图片的回车键弹起时\n $p.remove()\n return\n }\n\n editor.selection.createRangeByElem($p, true, true)\n editor.selection.restoreSelection()\n $selectionElem.remove()\n }\n\n // enter up 时\n function fn() {\n const $textElem = editor.$textElem\n const $selectionElem = editor.selection.getSelectionContainerElem() as DomElement\n const $parentElem = $selectionElem.parent()\n\n if ($parentElem.html() === '<code><br></code>') {\n // 回车之前光标所在一个 <p><code>.....</code></p> ,忽然回车生成一个空的 <p><code><br></code></p>\n // 而且继续回车跳不出去,因此只能特殊处理\n insertEmptyP($parentElem)\n return\n }\n\n if (\n $selectionElem.getNodeName() === 'FONT' &&\n $selectionElem.text() === '' &&\n $selectionElem.attr('face') === 'monospace'\n ) {\n // 行内code回车时会产生一个<font face=\"monospace\"><br></font>,导致样式问题\n insertEmptyP($parentElem)\n return\n }\n\n if (!$parentElem.equal($textElem)) {\n // 不是顶级标签\n return\n }\n\n const nodeName = $selectionElem.getNodeName()\n if (nodeName === 'P' && $selectionElem.attr('data-we-empty-p') === null) {\n // 当前的标签是 P 且不为 editor 生成的空白占位 p 标签,不用做处理\n return\n }\n\n if ($selectionElem.text()) {\n // 有内容,不做处理\n return\n }\n\n // 插入 <p> ,并将选取定位到 <p>,删除当前标签\n insertEmptyP($selectionElem)\n }\n enterUpEvents.push(fn)\n\n // enter down 时\n function createPWhenEnterText(e: Event) {\n // selection中的range缓存还有问题,更新不及时,此处手动更新range,处理enter的bug\n editor.selection.saveRange(getSelection()?.getRangeAt(0))\n const $selectElem = editor.selection.getSelectionContainerElem() as DomElement\n if ($selectElem.id === editor.textElemId) {\n // 回车时,默认创建了 text 标签(没有 p 标签包裹),父元素直接就是 $textElem\n // 例如,光标放在 table 最后侧,回车时,默认就是这个情况\n e.preventDefault()\n editor.cmd.do('insertHTML', '<p><br></p>')\n }\n }\n enterDownEvents.push(createPWhenEnterText)\n}\n\nexport default enterToCreateP\n","/**\n * @description 删除时保留 EMPTY_P\n * @author wangfupeng\n */\n\nimport { EMPTY_P } from '../../utils/const'\nimport Editor from '../../editor/index'\nimport $ from '../../utils/dom-core'\n\n/**\n * 删除时保留 EMPTY_P\n * @param editor 编辑器实例\n * @param deleteUpEvents delete 键 up 时的 hooks\n * @param deleteDownEvents delete 建 down 时的 hooks\n */\nfunction deleteToKeepP(editor: Editor, deleteUpEvents: Function[], deleteDownEvents: Function[]) {\n function upFn() {\n const $textElem = editor.$textElem\n const html = editor.$textElem.html()\n const text = editor.$textElem.text()\n const txtHtml = html.trim()\n /**\n @description \n 如果编辑区清空的状态下,单单插入一张图片,删除图片后,会存在空的情况:'<p data-we-empty-p=\"\"></p>'\n 需要包含这种边界情况\n **/\n\n const emptyTags: string[] = ['<p><br></p>', '<br>', '<p data-we-empty-p=\"\"></p>', EMPTY_P]\n\n // 编辑器中的字符是\"\"或空白,说明内容为空\n if (/^\\s*$/.test(text) && (!txtHtml || emptyTags.includes(txtHtml))) {\n // 内容空了\n $textElem.html(EMPTY_P)\n\n editor.selection.createRangeByElem($textElem, false, true)\n editor.selection.restoreSelection()\n // 设置折叠后的光标位置在firebox等浏览器下\n // 光标设置在end位置会自动换行\n editor.selection.moveCursor($textElem.getNode(), 0)\n }\n }\n deleteUpEvents.push(upFn)\n\n function downFn(e: Event) {\n const $textElem = editor.$textElem\n const txtHtml = $textElem.html().toLowerCase().trim()\n if (txtHtml === EMPTY_P) {\n // 最后剩下一个空行,就不再删除了\n e.preventDefault()\n return\n }\n }\n deleteDownEvents.push(downFn)\n}\n\n/**\n * 剪切时保留 EMPTY_P\n * @param editor 编辑器实例\n * @param cutEvents keydown hooks\n */\nexport function cutToKeepP(editor: Editor, cutEvents: Function[]) {\n function upFn(e: KeyboardEvent) {\n if (e.keyCode !== 88) {\n return\n }\n\n const $textElem = editor.$textElem\n const txtHtml = $textElem.html().toLowerCase().trim()\n\n // firefox 时用 txtHtml === '<br>' 判断,其他用 !txtHtml 判断\n if (!txtHtml || txtHtml === '<br>') {\n // 内容空了\n const $p = $(EMPTY_P)\n $textElem.html(' ') // 一定要先清空,否则在 firefox 下有问题\n $textElem.append($p)\n editor.selection.createRangeByElem($p, false, true)\n editor.selection.restoreSelection()\n // 设置折叠后的光标位置在firebox等浏览器下\n // 光标设置在end位置会自动换行\n editor.selection.moveCursor($p.getNode(), 0)\n }\n }\n\n cutEvents.push(upFn)\n}\n\nexport default deleteToKeepP\n","/**\n * @description 编辑区域 tab 的特殊处理\n * @author wangfupeng\n */\n\nimport Editor from '../../editor/index'\n\n/**\n * 编辑区域 tab 的特殊处理,转换为空格\n * @param editor 编辑器实例\n * @param tabDownEvents tab down 事件钩子\n */\nfunction tabHandler(editor: Editor, tabDownEvents: Function[]) {\n // 定义函数\n function fn() {\n if (!editor.cmd.queryCommandSupported('insertHTML')) {\n // 必须原生支持 insertHTML 命令\n return\n }\n const $selectionElem = editor.selection.getSelectionContainerElem()\n if (!$selectionElem) {\n return\n }\n const $parentElem = $selectionElem.parent()\n const selectionNodeName = $selectionElem.getNodeName()\n const parentNodeName = $parentElem.getNodeName()\n\n if (\n selectionNodeName == 'CODE' ||\n parentNodeName === 'CODE' ||\n parentNodeName === 'PRE' ||\n /hljs/.test(parentNodeName)\n ) {\n // <pre><code> 里面\n editor.cmd.do('insertHTML', editor.config.languageTab)\n } else {\n // 普通文字\n editor.cmd.do('insertHTML', '&nbsp;&nbsp;&nbsp;&nbsp;')\n }\n }\n\n // 保留函数\n tabDownEvents.push(fn)\n}\n\nexport default tabHandler\n","/**\n * @description 粘贴 text html\n * @author wangfupeng\n */\n\nimport Editor from '../../editor/index'\nimport { getPasteText, getPasteHtml } from '../paste/paste-event'\nimport { isFunction } from '../../utils/util'\nimport { urlRegex } from '../../utils/const'\nimport { DomElement } from '../../utils/dom-core'\n\n/**\n * 格式化html\n * @param val 粘贴的html\n * @author Gavin\n * @description\n 格式化html需要特别注意\n 功能:\n 1. 将htmlText中的div都替换成p标签\n 2. 将处理后的htmlText模拟先插入到真实dom中处理P截断问题。\n\n 注意点:\n 由于P不能嵌套p会导致标签截断从而将<p><p>xx</p></p>这样一个结构插入到页面时,会出现很多问题,包括光标位置问题,页面凭空多很多元素的问题。\n */\nfunction formatHtml(htmlText: string) {\n const paste = htmlText\n .replace(/<div>/gim, '<p>') // div 全部替换为 p 标签\n .replace(/<\\/div>/gim, '</p>')\n .trim() // 去除''\n\n // 模拟插入到真实dom中\n const tempContainer = document.createElement('div')\n\n tempContainer.innerHTML = paste\n\n return tempContainer.innerHTML.replace(/<p><\\/p>/gim, '') // 将被截断的p都替换掉\n}\n\n/**\n * 格式化html\n * @param val 粘贴的html\n * @author liuwei\n */\nfunction formatCode(val: string) {\n let pasteText = val.replace(/<br>|<br\\/>/gm, '\\n').replace(/<[^>]+>/gm, '')\n\n return pasteText\n}\n\n/**\n * 判断html是否使用P标签包裹\n * @param html 粘贴的html\n * @author luochao\n */\nfunction isParagraphHtml(html: string): boolean {\n if (html === '') return false\n\n const container = document.createElement('div')\n container.innerHTML = html\n\n return container.firstChild?.nodeName === 'P'\n}\n\n/**\n * 判断当前选区是否是空段落\n * @param topElem 选区顶层元素\n * @author luochao\n */\nfunction isEmptyParagraph(topElem: DomElement | undefined): boolean {\n if (!topElem?.length) return false\n\n const dom = topElem.elems[0]\n\n return dom.nodeName === 'P' && dom.innerHTML === '<br>'\n}\n\n/**\n * 粘贴文本和 html\n * @param editor 编辑器对象\n * @param pasteEvents 粘贴事件列表\n */\nfunction pasteTextHtml(editor: Editor, pasteEvents: Function[]) {\n function fn(e: Event) {\n // 获取配置\n const config = editor.config\n const pasteFilterStyle = config.pasteFilterStyle\n const pasteIgnoreImg = config.pasteIgnoreImg\n const pasteTextHandle = config.pasteTextHandle\n\n // 获取粘贴的文字\n let pasteHtml = getPasteHtml(e as ClipboardEvent, pasteFilterStyle, pasteIgnoreImg)\n let pasteText = getPasteText(e as ClipboardEvent)\n pasteText = pasteText.replace(/\\n/gm, '<br>')\n // 当前选区所在的 DOM 节点\n const $selectionElem = editor.selection.getSelectionContainerElem()\n if (!$selectionElem) {\n return\n }\n const nodeName = $selectionElem?.getNodeName()\n const $topElem = $selectionElem?.getNodeTop(editor)\n // 当前节点顶级可能没有\n let topNodeName: string = ''\n if ($topElem.elems[0]) {\n topNodeName = $topElem?.getNodeName()\n }\n // code 中只能粘贴纯文本\n if (nodeName === 'CODE' || topNodeName === 'PRE') {\n if (pasteTextHandle && isFunction(pasteTextHandle)) {\n // 用户自定义过滤处理粘贴内容\n pasteText = '' + (pasteTextHandle(pasteText) || '')\n }\n editor.cmd.do('insertHTML', formatCode(pasteText))\n return\n }\n\n // 如果用户开启闭粘贴样式注释则将复制进来为url的直接转为链接 否则不转换\n // 在群中有用户提到关闭样式粘贴复制的文字进来后链接直接转为文字了,不符合预期,这里优化下\n if (urlRegex.test(pasteText) && pasteFilterStyle) {\n //当复制的内容为链接时,也应该判断用户是否定义了处理粘贴的事件\n if (pasteTextHandle && isFunction(pasteTextHandle)) {\n // 用户自定义过滤处理粘贴内容\n pasteText = '' + (pasteTextHandle(pasteText) || '') // html\n }\n\n const insertUrl = urlRegex.exec(pasteText)![0]\n const otherText = pasteText.replace(urlRegex, '')\n\n return editor.cmd.do(\n 'insertHTML',\n `<a href=\"${insertUrl}\" target=\"_blank\">${insertUrl}</a>${otherText}`\n ) // html\n }\n // table 中td、th待开发。。。\n if (!pasteHtml) {\n return\n }\n try {\n // firefox 中,获取的 pasteHtml 可能是没有 <ul> 包裹的 <li>\n // 因此执行 insertHTML 会报错\n if (pasteTextHandle && isFunction(pasteTextHandle)) {\n // 用户自定义过滤处理粘贴内容\n pasteHtml = '' + (pasteTextHandle(pasteHtml) || '') // html\n }\n // 粘贴的html的是否是css的style样式\n let isCssStyle: boolean = /[\\.\\#\\@]?\\w+[ ]+\\{[^}]*\\}/.test(pasteHtml) // eslint-disable-line\n // 经过处理后还是包含暴露的css样式则直接插入它的text\n if (isCssStyle && pasteFilterStyle) {\n editor.cmd.do('insertHTML', `${formatHtml(pasteText)}`) // text\n } else {\n const html = formatHtml(pasteHtml)\n // 如果是段落,为了兼容 firefox 和 chrome差异自定义插入\n if (isParagraphHtml(html)) {\n const $textEl = editor.$textElem\n editor.cmd.do('insertHTML', html)\n // 全选的情况下覆盖原有内容\n if ($textEl.equal($selectionElem)) {\n // 更新选区\n editor.selection.createEmptyRange()\n return\n }\n // 如果选区是空段落,移除空段落\n if (isEmptyParagraph($topElem)) {\n $topElem.remove()\n }\n } else {\n // 如果用户从百度等网站点击复制得到的图片是一串img标签且待src的http地址\n // 见 https://github.com/wangeditor-team/wangEditor/issues/3119\n // 如果是走用户定义的图片上传逻辑\n const isHasOnlyImgEleReg = /^<img [^>]*src=['\"]([^'\"]+)[^>]*>$/g\n if (!isHasOnlyImgEleReg.test(html)) {\n editor.cmd.do('insertHTML', html)\n }\n }\n }\n } catch (ex) {\n // 此时使用 pasteText 来兼容一下\n if (pasteTextHandle && isFunction(pasteTextHandle)) {\n // 用户自定义过滤处理粘贴内容\n pasteText = '' + (pasteTextHandle(pasteText) || '')\n }\n editor.cmd.do('insertHTML', `${formatHtml(pasteText)}`) // text\n }\n }\n\n pasteEvents.push(fn)\n}\n\nexport default pasteTextHtml\n","/**\n * @description 将粘贴的 html 字符串,转换为正确、简洁的 html 代码。剔除不必要的标签和属性。\n * @author wangfupeng\n */\n\nimport { EMPTY_TAGS, IGNORE_TAGS, NECESSARY_ATTRS } from './tags'\nimport HtmlParser from '../../lib/simplehtmlparser.js'\n\ntype AttrType = {\n name: string\n value: string\n}\n\n/**\n * 过滤掉空 span\n * @param html html\n */\nfunction filterEmptySpan(html: string): string {\n const regForReplace = /<span>.*?<\\/span>/gi\n const regForMatch = /<span>(.*?)<\\/span>/\n return html.replace(regForReplace, (s: string): string => {\n // s 是单个 span ,如 <span>文字</span>\n const result = s.match(regForMatch)\n if (result == null) return ''\n return result[1]\n })\n}\n\n/**\n * 是否忽略标签\n * @param tag tag\n * @param ignoreImg 是否忽略 img 标签\n */\nfunction isIgnoreTag(tag: string, ignoreImg: boolean): boolean {\n tag = tag.toLowerCase().trim()\n\n // 忽略的标签\n if (IGNORE_TAGS.has(tag)) {\n return true\n }\n\n // 是否忽略图片\n if (ignoreImg) {\n if (tag === 'img') {\n return true\n }\n }\n\n return false\n}\n\n/**\n * 为 tag 生成 html 字符串,开始部分\n * @param tag tag\n * @param attrs 属性\n */\nfunction genStartHtml(tag: string, attrs: AttrType[]): string {\n let result = ''\n\n // tag < 符号\n result = `<${tag}`\n\n // 拼接属性\n let attrStrArr: string[] = []\n attrs.forEach((attr: AttrType) => {\n attrStrArr.push(`${attr.name}=\"${attr.value}\"`)\n })\n if (attrStrArr.length > 0) {\n result = result + ' ' + attrStrArr.join(' ')\n }\n\n // tag > 符号\n const isEmpty = EMPTY_TAGS.has(tag) // 没有子节点或文本的标签,如 img\n result = result + (isEmpty ? '/' : '') + '>'\n\n return result\n}\n\n/**\n * 为 tag 生成 html 字符串,结尾部分\n * @param tag tag\n */\nfunction genEndHtml(tag: string) {\n return `</${tag}>`\n}\n\n/**\n * 处理粘贴的 html\n * @param html html 字符串\n * @param filterStyle 是否过滤 style 样式\n * @param ignoreImg 是否忽略 img 标签\n */\nfunction parseHtml(html: string, filterStyle: boolean = true, ignoreImg: boolean = false): string {\n let resultArr: string[] = [] // 存储结果,数组形式,最后再 join\n\n // 当前正在处理的标签,以及记录和清除的方法\n let CUR_TAG = ''\n function markTagStart(tag: string): void {\n tag = tag.trim()\n if (!tag) return\n if (EMPTY_TAGS.has(tag)) return // 内容为空的标签,如 img ,不用记录\n CUR_TAG = tag\n }\n function markTagEnd(): void {\n CUR_TAG = ''\n }\n\n // 能通过 'text/html' 格式获取 html\n const htmlParser = new HtmlParser()\n htmlParser.parse(html, {\n startElement(tag: string, attrs: []) {\n // 首先,标记开始\n markTagStart(tag)\n\n // 忽略的标签\n if (isIgnoreTag(tag, ignoreImg)) {\n return\n }\n\n // 找出该标签必须的属性(其他的属性忽略)\n const necessaryAttrKeys = NECESSARY_ATTRS.get(tag) || []\n const attrsForTag: AttrType[] = []\n attrs.forEach((attr: AttrType) => {\n // 属性名\n const name = attr.name\n\n // style 单独处理\n if (name === 'style') {\n // 保留 style 样式\n if (!filterStyle) {\n attrsForTag.push(attr)\n }\n return\n }\n\n // 除了 style 之外的其他属性\n if (necessaryAttrKeys.includes(name) === false) {\n // 不是必须的属性,忽略\n return\n }\n attrsForTag.push(attr)\n })\n\n // 拼接为 HTML 标签\n const html = genStartHtml(tag, attrsForTag)\n resultArr.push(html)\n },\n characters(str: string) {\n if (!str) {\n return\n }\n\n // 忽略的标签\n if (isIgnoreTag(CUR_TAG, ignoreImg)) return\n resultArr.push(str)\n },\n endElement(tag: string) {\n // 忽略的标签\n if (isIgnoreTag(tag, ignoreImg)) {\n return\n }\n\n // 拼接为 HTML 标签\n const html = genEndHtml(tag)\n resultArr.push(html)\n\n // 最后,标记结束\n markTagEnd()\n },\n comment(str: string) {\n /* 注释,不做处理 */\n markTagStart(str)\n },\n })\n\n let result = resultArr.join('') // 转换为字符串\n\n // 过滤掉空 span 标签\n result = filterEmptySpan(result)\n\n return result\n}\n\nexport default parseHtml\n","/**\n * @description 粘贴相关的 tags\n * @author wangfupeng\n */\n\n// 忽略的标签\nexport const IGNORE_TAGS = new Set([\n 'doctype',\n '!doctype',\n 'html',\n 'head',\n 'meta',\n 'body',\n 'script',\n 'style',\n 'link',\n 'frame',\n 'iframe',\n 'title',\n 'svg', // 暂时忽略,有需要再修改\n 'center',\n 'o:p', // 复制 word 内容包含 o:p 标签\n])\n\n// 指定标签必要的属性\nexport const NECESSARY_ATTRS = new Map([\n ['img', ['src', 'alt']],\n ['a', ['href', 'target']],\n ['td', ['colspan', 'rowspan']],\n ['th', ['colspan', 'rowspan']],\n])\n\n// 没有子节点或文本的标签\nexport const EMPTY_TAGS = new Set([\n 'area',\n 'base',\n 'basefont',\n 'br',\n 'col',\n 'hr',\n 'img',\n 'input',\n 'isindex',\n 'embed',\n])\n\n// 编辑区域顶级节点\nexport const TOP_LEVEL_TAGS = new Set([\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'p',\n 'ul',\n 'ol',\n 'table',\n 'blockquote', // 引用\n 'pre', // 代码\n 'hr',\n 'form',\n])\n","var parent = require('../../es/set');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.set');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Set;\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\nmodule.exports = collection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","// Copyright 2004 Erik Arvidsson. All Rights Reserved.\n//\n// This code is triple licensed using Apache Software License 2.0,\n// Mozilla Public License or GNU Public License\n//\n///////////////////////////////////////////////////////////////////////////////\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n// use this file except in compliance with the License. You may obtain a copy\n// of the License at http://www.apache.org/licenses/LICENSE-2.0\n//\n///////////////////////////////////////////////////////////////////////////////\n//\n// The contents of this file are subject to the Mozilla Public License\n// Version 1.1 (the \"License\"); you may not use this file except in\n// compliance with the License. You may obtain a copy of the License at\n// http://www.mozilla.org/MPL/\n//\n// Software distributed under the License is distributed on an \"AS IS\"\n// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the\n// License for the specific language governing rights and limitations\n// under the License.\n//\n// The Original Code is Simple HTML Parser.\n//\n// The Initial Developer of the Original Code is Erik Arvidsson.\n// Portions created by Erik Arvidssson are Copyright (C) 2004. All Rights\n// Reserved.\n//\n///////////////////////////////////////////////////////////////////////////////\n//\n// This program is free software; you can redistribute it and/or\n// modify it under the terms of the GNU General Public License\n// as published by the Free Software Foundation; either version 2\n// of the License, or (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with this program; if not, write to the Free Software\n// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n//\n///////////////////////////////////////////////////////////////////////////////\n\n/*\nvar handler ={\n\tstartElement: function (sTagName, oAttrs) {},\n\tendElement: function (sTagName) {},\n characters:\t\tfunction (s) {},\n comment:\t\tfunction (s) {}\n};\n*/\n\nfunction SimpleHtmlParser() {}\n\nSimpleHtmlParser.prototype = {\n handler: null,\n\n // regexps\n\n startTagRe: /^<([^>\\s\\/]+)((\\s+[^=>\\s]+(\\s*=\\s*((\\\"[^\"]*\\\")|(\\'[^']*\\')|[^>\\s]+))?)*)\\s*\\/?\\s*>/m,\n endTagRe: /^<\\/([^>\\s]+)[^>]*>/m,\n attrRe: /([^=\\s]+)(\\s*=\\s*((\\\"([^\"]*)\\\")|(\\'([^']*)\\')|[^>\\s]+))?/gm,\n\n parse: function (s, oHandler) {\n if (oHandler) this.contentHandler = oHandler\n\n var i = 0\n var res, lc, lm, rc, index\n var treatAsChars = false\n var oThis = this\n while (s.length > 0) {\n // Comment\n if (s.substring(0, 4) == '<!--') {\n index = s.indexOf('-->')\n if (index != -1) {\n this.contentHandler.comment(s.substring(4, index))\n s = s.substring(index + 3)\n treatAsChars = false\n } else {\n treatAsChars = true\n }\n }\n\n // end tag\n else if (s.substring(0, 2) == '</') {\n if (this.endTagRe.test(s)) {\n lc = RegExp.leftContext\n lm = RegExp.lastMatch\n rc = RegExp.rightContext\n\n lm.replace(this.endTagRe, function () {\n return oThis.parseEndTag.apply(oThis, arguments)\n })\n\n s = rc\n treatAsChars = false\n } else {\n treatAsChars = true\n }\n }\n // start tag\n else if (s.charAt(0) == '<') {\n if (this.startTagRe.test(s)) {\n lc = RegExp.leftContext\n lm = RegExp.lastMatch\n rc = RegExp.rightContext\n\n lm.replace(this.startTagRe, function () {\n return oThis.parseStartTag.apply(oThis, arguments)\n })\n\n s = rc\n treatAsChars = false\n } else {\n treatAsChars = true\n }\n }\n\n if (treatAsChars) {\n index = s.indexOf('<')\n if (index == -1) {\n this.contentHandler.characters(s)\n s = ''\n } else {\n this.contentHandler.characters(s.substring(0, index))\n s = s.substring(index)\n }\n }\n\n treatAsChars = true\n }\n },\n\n parseStartTag: function (sTag, sTagName, sRest) {\n var attrs = this.parseAttributes(sTagName, sRest)\n this.contentHandler.startElement(sTagName, attrs)\n },\n\n parseEndTag: function (sTag, sTagName) {\n this.contentHandler.endElement(sTagName)\n },\n\n parseAttributes: function (sTagName, s) {\n var oThis = this\n var attrs = []\n s.replace(this.attrRe, function (a0, a1, a2, a3, a4, a5, a6, a7) {\n attrs.push(oThis.parseAttribute(sTagName, a0, a1, a2, a3, a4, a5, a6, a7))\n })\n return attrs\n },\n\n parseAttribute: function (sTagName, sAttribute, sName) {\n var value = ''\n if (arguments[7]) value = arguments[8]\n else if (arguments[5]) value = arguments[6]\n else if (arguments[3]) value = arguments[4]\n\n var empty = !value && !arguments[3]\n return { name: sName, value: empty ? null : value }\n },\n}\n\n// export default SimpleHtmlParser\nmodule.exports = SimpleHtmlParser\n","/**\n * @description 图片点击后选区更新到img的位置\n * @author tonghan\n */\n\nimport Editor from '../../editor/index'\nimport { DomElement } from '../../utils/dom-core'\n\n/**\n * 图片点击后选区更新到img的位置\n * @param editor 编辑器实例\n * @param imgClickEvents delete 键 up 时的 hooks\n */\nfunction imgClickActive(editor: Editor, imgClickEvents: Function[]) {\n function clickFn($img: DomElement) {\n editor.selection.createRangeByElem($img)\n editor.selection.restoreSelection()\n }\n imgClickEvents.push(clickFn)\n}\n\nexport default imgClickActive\n","/**\n * @description 获取子元素的 JSON 格式数据\n * @author wangfupeng\n */\n\nimport { replaceHtmlSymbol } from '../utils/util'\nimport $, { DomElement } from '../utils/dom-core'\n\ntype AttrType = {\n name: string\n value: string\n}\nexport type NodeType = {\n tag: string\n attrs: AttrType[]\n children: NodeListType\n}\nexport type NodeListType = Array<string | NodeType>\n\n/**\n * 获取子元素的 JSON 格式数据\n * @param $elem DOM 节点\n */\nfunction getChildrenJSON($elem: DomElement): NodeListType {\n const result: NodeListType = [] // 存储结果\n\n const $children = $elem.childNodes() || [] // 注意 childNodes() 可以获取文本节点\n $children.forEach((curElem: HTMLElement) => {\n let elemResult\n const nodeType = curElem.nodeType\n\n // 文本节点\n if (nodeType === 3) {\n elemResult = curElem.textContent || ''\n elemResult = replaceHtmlSymbol(elemResult)\n }\n\n // 普通 DOM 节点\n if (nodeType === 1) {\n elemResult = {}\n elemResult = elemResult as NodeType\n\n // tag\n elemResult.tag = curElem.nodeName.toLowerCase()\n // attr\n const attrData = []\n const attrList = curElem.attributes\n const attrListLength = attrList.length || 0\n for (let i = 0; i < attrListLength; i++) {\n const attr = attrList[i]\n attrData.push({\n name: attr.name,\n value: attr.value,\n })\n }\n elemResult.attrs = attrData\n // children递归\n elemResult.children = getChildrenJSON($(curElem))\n }\n\n if (elemResult) {\n result.push(elemResult)\n }\n })\n return result\n}\n\nexport default getChildrenJSON\n","/**\n * @description 从nodeList json格式中遍历生成dom元素\n * @author zhengwenjian\n */\n\nimport $, { DomElement } from './../utils/dom-core'\nimport { NodeListType } from './getChildrenJSON'\n\nfunction getHtmlByNodeList(\n nodeList: NodeListType,\n parent: Node = document.createElement('div')\n): DomElement {\n // 设置一个父节点存储所有子节点\n let root = parent\n\n // 遍历节点JSON\n nodeList.forEach(item => {\n let elem: Text | Node | undefined\n\n // 当为文本节点时\n if (typeof item === 'string') {\n elem = document.createTextNode(item)\n }\n\n // 当为普通节点时\n if (typeof item === 'object') {\n elem = document.createElement(item.tag)\n item.attrs.forEach(attr => {\n $(elem).attr(attr.name, attr.value)\n })\n\n // 有子节点时递归将子节点加入当前节点\n if (item.children && item.children.length > 0) {\n getHtmlByNodeList(item.children, elem.getRootNode())\n }\n }\n elem && root.appendChild(elem)\n })\n return $(root)\n}\n\nexport default getHtmlByNodeList\n","/**\n * @description Menus 菜单栏 入口文件\n * @author wangfupeng\n */\n\nimport Editor from '../editor/index'\nimport Menu from './menu-constructors/Menu'\nimport MenuConstructorList, { MenuListType } from './menu-list'\nimport $, { DomElement } from './../utils/dom-core'\n// import { MenuActive } from './menu-constructors/Menu'\n\nclass Menus {\n public editor: Editor\n public menuList: Menu[]\n public constructorList: MenuListType\n\n constructor(editor: Editor) {\n this.editor = editor\n this.menuList = []\n this.constructorList = MenuConstructorList // 所有菜单构造函数的列表\n }\n\n /**\n * 自定义添加菜单\n * @param key 菜单 key ,和 editor.config.menus 对应\n * @param Menu 菜单构造函数\n */\n public extend(key: string, Menu: any) {\n if (!Menu || typeof Menu !== 'function') return\n this.constructorList[key] = Menu\n }\n\n // 初始化菜单\n public init(): void {\n // 从用户配置的 menus 入手,看需要初始化哪些菜单\n const config = this.editor.config\n\n // 排除exclude包含的菜单\n let excludeMenus: string[] | any = config.excludeMenus\n if (Array.isArray(excludeMenus) === false) excludeMenus = []\n config.menus = config.menus.filter(key => excludeMenus.includes(key) === false)\n\n // 排除自扩展中exclude包含的菜单\n let CustomMenuKeysList: string[] = Object.keys(Editor.globalCustomMenuConstructorList)\n CustomMenuKeysList = CustomMenuKeysList.filter(key => excludeMenus.includes(key))\n CustomMenuKeysList.forEach((key: string) => {\n delete Editor.globalCustomMenuConstructorList[key]\n })\n\n config.menus.forEach(menuKey => {\n const MenuConstructor = this.constructorList[menuKey] // 暂用 any ,后面再替换\n this._initMenuList(menuKey, MenuConstructor)\n })\n\n // 全局注册\n for (let [menuKey, menuFun] of Object.entries(Editor.globalCustomMenuConstructorList)) {\n const MenuConstructor = menuFun // 暂用 any ,后面再替换\n this._initMenuList(menuKey, MenuConstructor)\n }\n\n // 渲染 DOM\n this._addToToolbar()\n\n if (config.showMenuTooltips) {\n // 添加菜单栏tooltips\n this._bindMenuTooltips()\n }\n }\n\n /**\n * 创建 menu 实例,并放到 menuList 中\n * @param menuKey 菜单 key ,和 editor.config.menus 对应\n * @param MenuConstructor 菜单构造函数\n */\n private _initMenuList(menuKey: String, MenuConstructor: any): void {\n if (MenuConstructor == null || typeof MenuConstructor !== 'function') {\n // 必须是 class\n return\n }\n if (this.menuList.some(menu => menu.key === menuKey)) {\n console.warn('菜单名称重复:' + menuKey)\n } else {\n const m = new MenuConstructor(this.editor)\n m.key = menuKey\n this.menuList.push(m)\n }\n }\n\n // 绑定菜单栏tooltips\n private _bindMenuTooltips(): void {\n const editor = this.editor\n const $toolbarElem = editor.$toolbarElem\n const config = editor.config\n\n // 若isTooltipShowTop为true则伪元素为下三角反之为上三角\n const menuTooltipPosition = config.menuTooltipPosition\n const $tooltipEl = $(\n `<div class=\"w-e-menu-tooltip w-e-menu-tooltip-${menuTooltipPosition}\">\n <div class=\"w-e-menu-tooltip-item-wrapper\">\n <div></div>\n </div>\n </div>`\n )\n\n $tooltipEl.css('visibility', 'hidden')\n $toolbarElem.append($tooltipEl)\n // 设置 z-index\n $tooltipEl.css('z-index', editor.zIndex.get('tooltip'))\n\n let showTimeoutId: number = 0 // 定时器延时200ms显示tooltips\n // 清空计时器\n function clearShowTimeoutId() {\n if (showTimeoutId) {\n clearTimeout(showTimeoutId)\n }\n }\n\n // 隐藏tooltip\n function hide() {\n clearShowTimeoutId()\n $tooltipEl.css('visibility', 'hidden')\n }\n\n // 事件监听\n $toolbarElem\n .on('mouseover', (e: MouseEvent) => {\n const target = e.target as HTMLElement\n const $target = $(target)\n let title: string | undefined\n let $menuEl: DomElement | undefined\n\n if ($target.isContain($toolbarElem)) {\n hide()\n return\n }\n\n if ($target.parentUntil('.w-e-droplist') != null) {\n // 处于droplist中时隐藏\n hide()\n } else {\n if ($target.attr('data-title')) {\n title = $target.attr('data-title')\n $menuEl = $target\n } else {\n const $parent = $target.parentUntil('.w-e-menu')\n if ($parent != null) {\n title = $parent.attr('data-title')\n $menuEl = $parent\n }\n }\n }\n\n if (title && $menuEl) {\n clearShowTimeoutId()\n const targetOffset = $menuEl.getOffsetData()\n $tooltipEl.text(editor.i18next.t('menus.title.' + title))\n const tooltipOffset = $tooltipEl.getOffsetData()\n const left =\n targetOffset.left + targetOffset.width / 2 - tooltipOffset.width / 2\n $tooltipEl.css('left', `${left}px`)\n\n // 2. 高度设置\n if (menuTooltipPosition === 'up') {\n $tooltipEl.css('top', `${targetOffset.top - tooltipOffset.height - 8}px`)\n } else if (menuTooltipPosition === 'down') {\n $tooltipEl.css('top', `${targetOffset.top + targetOffset.height + 8}px`)\n }\n\n showTimeoutId = window.setTimeout(() => {\n $tooltipEl.css('visibility', 'visible')\n }, 200)\n } else {\n hide()\n }\n })\n .on('mouseleave', () => {\n hide()\n })\n }\n // 添加到菜单栏\n private _addToToolbar(): void {\n const editor = this.editor\n const $toolbarElem = editor.$toolbarElem\n\n // 遍历添加到 DOM\n this.menuList.forEach(menu => {\n const $elem = menu.$elem\n if ($elem) {\n $toolbarElem.append($elem)\n }\n })\n }\n\n /**\n * 获取菜单对象\n * @param 菜单名称 小写\n * @return Menus 菜单对象\n */\n public menuFind(key: string): Menu {\n const menuList = this.menuList\n for (let i = 0, l = menuList.length; i < l; i++) {\n if (menuList[i].key === key) return menuList[i]\n }\n\n return menuList[0]\n }\n\n /**\n * @description 修改菜单激活状态\n */\n public changeActive(): void {\n this.menuList.forEach(menu => {\n setTimeout((menu as any).tryChangeActive.bind(menu), 100) // 暂用 any ,后面再替换\n })\n }\n}\n\nexport default Menus\n","module.exports = require(\"core-js-pure/stable/object/keys\");","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n","require('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var parent = require('../../es/object/entries');\n\nmodule.exports = parent;\n","require('../../modules/es.object.entries');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.entries;\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) {\n result.push(TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var parent = require('../../es/instance/some');\n\nmodule.exports = parent;\n","var some = require('../array/virtual/some');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.some;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.some) ? some : own;\n};\n","require('../../../modules/es.array.some');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').some;\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","/**\n * @description 所有菜单的构造函数\n * @author wangfupeng\n */\n\nimport Bold from './bold/index'\nimport Head from './head/index'\nimport Link from './link/index'\nimport Italic from './italic/index'\nimport Underline from './underline/index'\nimport StrikeThrough from './strike-through/index'\nimport FontStyle from './font-style/index'\nimport FontSize from './font-size'\nimport Justify from './justify/index'\nimport Quote from './quote/index'\nimport BackColor from './back-color/index'\nimport FontColor from './font-color/index'\nimport Video from './video/index'\nimport Image from './img/index'\nimport Indent from './indent/index'\nimport Emoticon from './emoticon/index'\nimport List from './list/index'\nimport LineHeight from './lineHeight/index'\nimport Undo from './undo/index'\nimport Redo from './redo/index'\nimport Table from './table/index'\nimport Code from './code'\nimport SplitLine from './split-line/index'\nimport Todo from './todo'\n\nexport type MenuListType = {\n [key: string]: any\n}\n\nexport default {\n bold: Bold,\n head: Head,\n italic: Italic,\n link: Link,\n underline: Underline,\n strikeThrough: StrikeThrough,\n fontName: FontStyle,\n fontSize: FontSize,\n justify: Justify,\n quote: Quote,\n backColor: BackColor,\n foreColor: FontColor,\n video: Video,\n image: Image,\n indent: Indent,\n emoticon: Emoticon,\n list: List,\n lineHeight: LineHeight,\n undo: Undo,\n redo: Redo,\n table: Table,\n code: Code,\n splitLine: SplitLine,\n todo: Todo,\n}\n","/**\n * @description 加粗\n * @author wangfupeng\n */\n\nimport BtnMenu from '../menu-constructors/BtnMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nclass Bold extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"加粗\">\n <i class=\"w-e-icon-bold\"></i>\n </div>`\n )\n super($elem, editor)\n }\n\n /**\n * 点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n const isSelectEmpty = editor.selection.isSelectionEmpty()\n\n if (isSelectEmpty) {\n // 选区范围是空的,插入并选中一个“空白”\n editor.selection.createEmptyRange()\n }\n\n // 执行 bold 命令\n editor.cmd.do('bold')\n\n if (isSelectEmpty) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {\n const editor = this.editor\n if (editor.cmd.queryCommandState('bold')) {\n this.active()\n } else {\n this.unActive()\n }\n }\n}\n\nexport default Bold\n","/**\n * @description 标题\n * @author wangfupeng\n */\n\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport { getRandomCode } from '../../utils/util'\nimport { TCatalog } from '../../config/events'\nimport { EMPTY_P } from '../../utils/const'\n\nclass Head extends DropListMenu implements MenuActive {\n oldCatalogs: TCatalog[] | undefined\n constructor(editor: Editor) {\n const $elem = $(\n '<div class=\"w-e-menu\" data-title=\"标题\"><i class=\"w-e-icon-header\"></i></div>'\n )\n const dropListConf = {\n width: 100,\n title: '设置标题',\n type: 'list', // droplist 以列表形式展示\n list: [\n { $elem: $('<h1>H1</h1>'), value: '<h1>' },\n { $elem: $('<h2>H2</h2>'), value: '<h2>' },\n { $elem: $('<h3>H3</h3>'), value: '<h3>' },\n { $elem: $('<h4>H4</h4>'), value: '<h4>' },\n { $elem: $('<h5>H5</h5>'), value: '<h5>' },\n {\n $elem: $(`<p>${editor.i18next.t('menus.dropListMenu.head.正文')}</p>`),\n value: '<p>',\n },\n ],\n clickHandler: (value: string) => {\n // 注意 this 是指向当前的 Head 对象\n this.command(value)\n },\n }\n super($elem, editor, dropListConf)\n\n const onCatalogChange = editor.config.onCatalogChange\n // 未配置目录change监听回调时不运行下面操作\n if (onCatalogChange) {\n this.oldCatalogs = []\n this.addListenerCatalog() // 监听文本框编辑时的大纲信息\n this.getCatalogs() // 初始有值的情况获取一遍大纲信息\n }\n }\n\n /**\n * 执行命令\n * @param value value\n */\n public command(value: string): void {\n const editor = this.editor\n const $selectionElem = editor.selection.getSelectionContainerElem()\n if ($selectionElem && editor.$textElem.equal($selectionElem)) {\n // 不能选中多行来设置标题,否则会出现问题\n // 例如选中的是 <p>xxx</p><p>yyy</p> 来设置标题,设置之后会成为 <h1>xxx<br>yyy</h1> 不符合预期\n this.setMultilineHead(value)\n } else {\n // 选中内容包含序列code表格分割线时不处理\n if (\n ['OL', 'UL', 'LI', 'TABLE', 'TH', 'TR', 'CODE', 'HR'].indexOf(\n $($selectionElem).getNodeName()\n ) > -1\n ) {\n return\n }\n\n editor.cmd.do('formatBlock', value)\n }\n\n // 标题设置成功且不是<p>正文标签就配置大纲id\n value !== '<p>' && this.addUidForSelectionElem()\n }\n\n /**\n * 为标题设置大纲\n */\n private addUidForSelectionElem() {\n const editor = this.editor\n const tag = editor.selection.getSelectionContainerElem()\n const id = getRandomCode() // 默认五位数id\n $(tag).attr('id', id)\n }\n\n /**\n * 监听change事件来返回大纲信息\n */\n private addListenerCatalog() {\n const editor = this.editor\n editor.txt.eventHooks.changeEvents.push(() => {\n this.getCatalogs()\n })\n }\n\n /**\n * 获取大纲数组\n */\n private getCatalogs() {\n const editor = this.editor\n const $textElem = this.editor.$textElem\n const onCatalogChange = editor.config.onCatalogChange\n const elems = $textElem.find('h1,h2,h3,h4,h5')\n const catalogs: TCatalog[] = []\n elems.forEach((elem, index) => {\n const $elem = $(elem)\n let id = $elem.attr('id')\n const tag = $elem.getNodeName()\n const text = $elem.text()\n if (!id) {\n id = getRandomCode()\n $elem.attr('id', id)\n }\n // 标题为空的情况不生成目录\n if (!text) return\n catalogs.push({\n tag,\n id,\n text,\n })\n })\n // 旧目录和新目录对比是否相等,不相等则运行回调并保存新目录到旧目录变量,以方便下一次对比\n if (JSON.stringify(this.oldCatalogs) !== JSON.stringify(catalogs)) {\n this.oldCatalogs = catalogs\n onCatalogChange && onCatalogChange(catalogs)\n }\n }\n /**\n * 设置选中的多行标题\n * @param value 需要执行的命令值\n */\n private setMultilineHead(value: string) {\n const editor = this.editor\n const $selection = editor.selection\n // 初始选区的父节点\n const containerElem = $selection.getSelectionContainerElem()?.elems[0]!\n // 白名单:用户选区里如果有该元素则不进行转换\n const _WHITE_LIST = [\n 'IMG',\n 'VIDEO',\n 'TABLE',\n 'TH',\n 'TR',\n 'UL',\n 'OL',\n 'PRE',\n 'HR',\n 'BLOCKQUOTE',\n ]\n // 获取选中的首、尾元素\n const startElem = $($selection.getSelectionStartElem())\n let endElem = $($selection.getSelectionEndElem())\n // 判断用户选中元素是否为最后一个空元素如果是将endElem指向上一个元素\n if (\n endElem.elems[0].outerHTML === $(EMPTY_P).elems[0].outerHTML &&\n !endElem.elems[0].nextSibling\n ) {\n endElem = endElem.prev()!\n }\n // 存放选中的所有元素\n const cacheDomList: DomElement[] = []\n cacheDomList.push(startElem.getNodeTop(editor))\n // 选中首尾元素在父级下的坐标\n const indexList: number[] = []\n // 选区共同祖先元素的所有子节点\n const childList = $selection.getRange()?.commonAncestorContainer.childNodes\n // 找到选区的首尾元素的下标,方便最后恢复选区\n childList?.forEach((item, index) => {\n if (item === cacheDomList[0].getNode()) {\n indexList.push(index)\n }\n if (item === endElem.getNodeTop(editor).getNode()) {\n indexList.push(index)\n }\n })\n // 找到首尾元素中间所包含的所有dom\n let i = 0\n // 数组中的当前元素不等于选区最后一个节点时循环寻找中间节点\n while (cacheDomList[i].getNode() !== endElem.getNodeTop(editor).getNode()) {\n // 严谨性判断,是否元素为空\n if (!cacheDomList[i].elems[0]) return\n let d = $(cacheDomList[i].next().getNode())\n cacheDomList.push(d)\n i++\n }\n // 将选区内的所有子节点进行遍历生成对应的标签\n cacheDomList?.forEach((_node, index) => {\n // 判断元素是否含有白名单内的标签元素\n if (!this.hasTag(_node, _WHITE_LIST)) {\n const $h = $(value)\n const $parentNode = _node.parent().getNode()\n // 设置标签内容\n $h.html(`${_node.html()}`)\n // 插入生成的新标签\n $parentNode.insertBefore($h.getNode(), _node.getNode())\n // 移除原有的标签\n _node.remove()\n }\n })\n // 重新设置选区起始位置,保留拖蓝区域\n $selection.createRangeByElems(\n containerElem.children[indexList[0]],\n containerElem.children[indexList[1]]\n )\n }\n /**\n * 是否含有某元素\n * @param elem 需要检查的元素\n * @param whiteList 白名单\n */\n private hasTag(elem: DomElement, whiteList: string[]): boolean {\n if (!elem) return false\n if (whiteList.includes(elem?.getNodeName())) return true\n let _flag = false\n elem.children()?.forEach(child => {\n _flag = this.hasTag($(child), whiteList)\n })\n return _flag\n }\n /**\n * 尝试改变菜单激活(高亮)状态\n */\n public tryChangeActive() {\n const editor = this.editor\n const reg = /^h/i\n const cmdValue = editor.cmd.queryCommandValue('formatBlock')\n if (reg.test(cmdValue)) {\n this.active()\n } else {\n this.unActive()\n }\n }\n}\n\nexport default Head\n","module.exports = require(\"core-js-pure/stable/json/stringify\");","var parent = require('../../es/json/stringify');\n\nmodule.exports = parent;\n","require('../../modules/es.json.stringify');\nvar core = require('../../internals/path');\n\n// eslint-disable-next-line es/no-json -- safe\nif (!core.JSON) core.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n return core.JSON.stringify.apply(null, arguments);\n};\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar fails = require('../internals/fails');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar re = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar fix = function (match, offset, string) {\n var prev = string.charAt(offset - 1);\n var next = string.charAt(offset + 1);\n if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) {\n return '\\\\u' + match.charCodeAt(0).toString(16);\n } return match;\n};\n\nvar FORCED = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var result = $stringify.apply(null, arguments);\n return typeof result == 'string' ? result.replace(re, fix) : result;\n }\n });\n}\n","/**\n * @description 链接 菜单\n * @author wangfupeng\n */\n\nimport PanelMenu from '../menu-constructors/PanelMenu'\nimport Editor from '../../editor/index'\nimport $, { DomElement } from '../../utils/dom-core'\nimport createPanelConf from './create-panel-conf'\nimport isActive from './is-active'\nimport Panel from '../menu-constructors/Panel'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport bindEvent from './bind-event/index'\nimport { EMPTY_P } from '../../utils/const'\n\nclass Link extends PanelMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n '<div class=\"w-e-menu\" data-title=\"链接\"><i class=\"w-e-icon-link\"></i></div>'\n )\n super($elem, editor)\n\n // 绑定事件,如点击链接时,可以查看链接\n bindEvent(editor)\n }\n\n /**\n * 菜单点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n let $linkElem\n\n /**\n @author:Gavin\n @description \n 解决当全选删除编辑区内容时,点击链接没反应的问题(因为选区有问题)\n \n **/\n let $selectionElem = editor.selection.getSelectionContainerElem()\n const $textElem = editor.$textElem\n const html = $textElem.html()\n const $txtHtml = html.trim()\n\n if ($txtHtml === EMPTY_P) {\n const $emptyChild = $textElem.children()\n // 调整选区\n editor.selection.createRangeByElem($emptyChild as DomElement, true, true)\n\n // 重新获取选区\n $selectionElem = editor.selection.getSelectionContainerElem()\n }\n\n // 判断是否是多行 多行则退出 否则会出现问题\n if ($selectionElem && editor.$textElem.equal($selectionElem)) {\n return\n }\n\n if (this.isActive) {\n // 菜单被激活,说明选区在链接里\n $linkElem = editor.selection.getSelectionContainerElem()\n if (!$linkElem) {\n return\n }\n\n // 弹出 panel\n this.createPanel($linkElem.text(), $linkElem.attr('href'))\n } else {\n // 菜单未被激活,说明选区不在链接里\n if (editor.selection.isSelectionEmpty()) {\n // 选区是空的,未选中内容\n this.createPanel('', '')\n } else {\n // 选中内容了\n this.createPanel(editor.selection.getSelectionText(), '')\n }\n }\n }\n\n /**\n * 创建 panel\n * @param text 文本\n * @param link 链接\n */\n private createPanel(text: string, link: string): void {\n const conf = createPanelConf(this.editor, text, link)\n const panel = new Panel(this, conf)\n panel.create()\n }\n\n /**\n * 尝试修改菜单 active 状态\n */\n public tryChangeActive() {\n const editor = this.editor\n if (isActive(editor)) {\n this.active()\n } else {\n this.unActive()\n }\n }\n}\n\nexport default Link\n","/**\n * @description link 菜单 panel tab 配置\n * @author wangfupeng\n */\n\nimport Editor from '../../editor/index'\nimport { PanelConf } from '../menu-constructors/Panel'\nimport { getRandom } from '../../utils/util'\nimport $, { DomElement } from '../../utils/dom-core'\nimport isActive from './is-active'\nimport { insertHtml } from './util'\n\nexport default function (editor: Editor, text: string, link: string): PanelConf {\n // panel 中需要用到的id\n const inputLinkId = getRandom('input-link')\n const inputTextId = getRandom('input-text')\n const btnOkId = getRandom('btn-ok')\n const btnDelId = getRandom('btn-del')\n\n // 是否显示“取消链接”\n const delBtnDisplay = isActive(editor) ? 'inline-block' : 'none'\n\n let $selectedLink: DomElement\n\n /**\n * 选中整个链接元素\n */\n function selectLinkElem(): void {\n if (!isActive(editor)) return\n\n const $linkElem = editor.selection.getSelectionContainerElem()\n if (!$linkElem) return\n editor.selection.createRangeByElem($linkElem)\n editor.selection.restoreSelection()\n\n $selectedLink = $linkElem // 赋值给函数内全局变量\n }\n\n /**\n * 插入链接\n * @param text 文字\n * @param link 链接\n */\n function insertLink(text: string, link: string): void {\n // fix: 修复列表下无法设置超链接的问题(替换选中文字中的标签)\n const subStr = new RegExp(/(<\\/*ul>)|(<\\/*li>)|(<\\/*ol>)/g)\n text = text.replace(subStr, '')\n if (isActive(editor)) {\n // 选区处于链接中,则选中整个菜单,再执行 insertHTML\n selectLinkElem()\n editor.cmd.do('insertHTML', `<a href=\"${link}\" target=\"_blank\">${text}</a>`)\n } else {\n // 选区未处于链接中,直接插入即可\n editor.cmd.do('insertHTML', `<a href=\"${link}\" target=\"_blank\">${text}</a>`)\n }\n }\n\n /**\n * 取消链接\n */\n function delLink(): void {\n if (!isActive(editor)) {\n return\n }\n // 选中整个链接\n selectLinkElem()\n // 用文本替换链接\n const selectionText = $selectedLink.text()\n editor.cmd.do('insertHTML', '<span>' + selectionText + '</span>')\n }\n\n /**\n * 校验链接是否合法\n * @param link 链接\n */\n function checkLink(text: string, link: string): boolean {\n //查看开发者自定义配置的返回值\n const check = editor.config.linkCheck(text, link)\n if (check === undefined) {\n //用户未能通过开发者的校验,且开发者不希望编辑器提示用户\n } else if (check === true) {\n //用户通过了开发者的校验\n return true\n } else {\n //用户未能通过开发者的校验,开发者希望我们提示这一字符串\n editor.config.customAlert(check, 'warning')\n }\n return false\n }\n\n const conf = {\n width: 300,\n height: 0,\n\n // panel 中可包含多个 tab\n tabs: [\n {\n // tab 的标题\n title: editor.i18next.t('menus.panelMenus.link.链接'),\n // 模板\n tpl: `<div>\n <input\n id=\"${inputTextId}\"\n type=\"text\"\n class=\"block\"\n value=\"${text}\"\n placeholder=\"${editor.i18next.t('menus.panelMenus.link.链接文字')}\"/>\n </td>\n <input\n id=\"${inputLinkId}\"\n type=\"text\"\n class=\"block\"\n value=\"${link}\"\n placeholder=\"${editor.i18next.t('如')} https://...\"/>\n </td>\n <div class=\"w-e-button-container\">\n <button type=\"button\" id=\"${btnOkId}\" class=\"right\">\n ${editor.i18next.t('插入')}\n </button>\n <button type=\"button\" id=\"${btnDelId}\" class=\"gray right\" style=\"display:${delBtnDisplay}\">\n ${editor.i18next.t('menus.panelMenus.link.取消链接')}\n </button>\n </div>\n </div>`,\n // 事件绑定\n events: [\n // 插入链接\n {\n selector: '#' + btnOkId,\n type: 'click',\n fn: () => {\n // 获取选取\n editor.selection.restoreSelection()\n const topNode = editor.selection\n .getSelectionRangeTopNodes()[0]\n .getNode()\n const selection = window.getSelection()\n // 执行插入链接\n const $link = $('#' + inputLinkId)\n const $text = $('#' + inputTextId)\n let link = $link.val().trim()\n let text = $text.val().trim()\n\n let html: string = ''\n if (selection && !selection?.isCollapsed)\n html = insertHtml(selection, topNode)?.trim()\n\n // 去除html的tag标签\n let htmlText = html?.replace(/<.*?>/g, '')\n let htmlTextLen = htmlText?.length ?? 0\n // 当input中的text的长度大于等于选区的文字时\n // 需要判断两者相同的长度的text内容是否相同\n // 相同则只需把多余的部分添加上去即可否则使用input中的内容\n if (htmlTextLen <= text.length) {\n let startText = text.substring(0, htmlTextLen)\n let endText = text.substring(htmlTextLen)\n if (htmlText === startText) {\n text = html + endText\n }\n }\n // 链接为空,则不插入\n if (!link) return\n // 文本为空,则用链接代替\n if (!text) text = link\n // 校验链接是否满足用户的规则,若不满足则不插入\n if (!checkLink(text, link)) return\n insertLink(text, link)\n\n // 返回 true表示该事件执行完之后panel 要关闭。否则 panel 不会关闭\n return true\n },\n bindEnter: true,\n },\n // 取消链接\n {\n selector: '#' + btnDelId,\n type: 'click',\n fn: () => {\n // 执行取消链接\n delLink()\n\n // 返回 true表示该事件执行完之后panel 要关闭。否则 panel 不会关闭\n return true\n },\n },\n ],\n }, // tab end\n ], // tabs end\n }\n\n return conf\n}\n","/**\n * 获取除了包裹在整行区域的顶级Node\n * @param node 最外层node下的某个childNode\n * @param topText 最外层node中文本内容\n */\nfunction getTopNode(node: Node, topText: string): Node {\n let pointerNode: Node = node\n let topNode: Node = node\n do {\n if (pointerNode.textContent === topText) break\n topNode = pointerNode\n if (pointerNode.parentNode) {\n pointerNode = pointerNode?.parentNode\n }\n } while (pointerNode?.nodeName !== 'P')\n\n return topNode\n}\n\n/**\n * 生成html的string形式\n * @param tagName 标签名\n * @param content 需要包裹的内容\n */\nfunction makeHtmlString(node: Node, content: string): string {\n let tagName = node.nodeName\n let attr = ''\n if (node.nodeType === 3 || /^(h|H)[1-6]$/.test(tagName)) {\n return content\n }\n if (node.nodeType === 1) {\n const style = (node as Element).getAttribute('style')\n const face = (node as Element).getAttribute('face')\n const color = (node as Element).getAttribute('color')\n if (style) attr = attr + ` style=\"${style}\"`\n if (face) attr = attr + ` face=\"${face}\"`\n if (color) attr = attr + ` color=\"${color}\"`\n }\n tagName = tagName.toLowerCase()\n return `<${tagName}${attr}>${content}</${tagName}>`\n}\n\n/**\n * 生成开始或者结束位置的html字符片段\n * @param topText 选区所在的行的文本内容\n * @param node 选区给出的node节点\n * @param startPos node文本内容选取的开始位置\n * @param endPos node文本内容选取的结束位置\n */\nfunction createPartHtml(topText: string, node: Node, startPos: number, endPost?: number): string {\n let selectionContent = node.textContent?.substring(startPos, endPost)\n let pointerNode: Node | null = node\n let content = ''\n do {\n content = makeHtmlString(pointerNode, selectionContent ?? '')\n selectionContent = content\n pointerNode = pointerNode?.parentElement\n } while (pointerNode && pointerNode.textContent !== topText)\n\n return content\n}\n\n/**\n * 生成需要插入的html内容的字符串形式\n * @param selection 选区对象\n * @param topNode 选区所在行的顶级node节点\n */\nfunction insertHtml(selection: Selection, topNode: Node): string {\n const { anchorNode, focusNode, anchorOffset: anchorPos, focusOffset: focusPos } = selection\n const topText = topNode.textContent ?? ''\n const TagArr = getContainerTag(topNode)\n\n let content: string = ''\n let startContent: string = ''\n let middleContent: string = ''\n let endContent: string = ''\n\n let startNode = anchorNode\n let endNode = focusNode\n // 用来保存 anchorNode的非p最外层节点\n let pointerNode = anchorNode\n\n // 节点是同一个的处理\n if (anchorNode?.isEqualNode(focusNode ?? null)) {\n let innerContent = createPartHtml(topText, anchorNode, anchorPos, focusPos)\n innerContent = addContainer(TagArr, innerContent)\n return innerContent\n }\n\n // 选中开始位置节点的处理\n if (anchorNode) startContent = createPartHtml(topText, anchorNode, anchorPos ?? 0)\n\n // 结束位置节点的处理\n if (focusNode) endContent = createPartHtml(topText, focusNode, 0, focusPos)\n\n // 将指针节点位置放置到开始的节点\n if (anchorNode) {\n // 获取start的非p顶级node\n startNode = getTopNode(anchorNode, topText)\n }\n if (focusNode) {\n // 获取end的非p顶级node\n endNode = getTopNode(focusNode, topText)\n }\n\n // 处于开始和结束节点位置之间的节点的处理\n pointerNode = startNode?.nextSibling ?? anchorNode\n while (!pointerNode?.isEqualNode(endNode ?? null)) {\n const pointerNodeName = pointerNode?.nodeName\n if (pointerNodeName === '#text') {\n middleContent = middleContent + pointerNode?.textContent\n } else {\n let htmlString = pointerNode?.firstChild?.parentElement?.innerHTML\n if (pointerNode)\n middleContent = middleContent + makeHtmlString(pointerNode, htmlString ?? '')\n }\n // 解决文字和图片同一行时会触发无限循环, 到不了endNode === pointerNode条件\n const nextPointNode = pointerNode?.nextSibling ?? pointerNode\n if (nextPointNode === pointerNode) break\n pointerNode = nextPointNode\n }\n\n content = `${startContent}${middleContent}${endContent}`\n\n // 增加最外层包裹标签\n content = addContainer(TagArr, content)\n\n return content\n}\n/**\n * 获取包裹在最外层的非p Node tagName 数组\n * @param node 选区所在行的node节点\n */\nfunction getContainerTag(node: Node): Node[] {\n const topText = node.textContent ?? ''\n let tagArr = []\n while (node?.textContent === topText) {\n if (node.nodeName !== 'P') {\n tagArr.push(node)\n }\n node = node.childNodes[0]\n }\n return tagArr\n}\n\n/**\n * 为内容增加包裹标签\n * @param tagArr 最外层包裹的tag数组索引越小tag越在外面\n * @param content tag要包裹的内容\n */\nfunction addContainer(tagArr: Node[], content: string): string {\n tagArr.forEach(v => {\n content = makeHtmlString(v, content)\n })\n return content\n}\n\nexport { getTopNode, makeHtmlString, createPartHtml, insertHtml }\n","/**\n * @description 绑定链接元素的事件,入口\n * @author wangfupeng\n */\n\nimport Editor from '../../../editor/index'\nimport bindTooltipEvent from './tooltip-event'\n\n/**\n * 绑定事件\n * @param editor 编辑器实例\n */\nfunction bindEvent(editor: Editor) {\n // tooltip 事件\n bindTooltipEvent(editor)\n}\n\nexport default bindEvent\n","/**\n * @description tooltip 事件\n * @author wangfupeng\n */\n\nimport $, { DomElement } from '../../../utils/dom-core'\nimport Tooltip, { TooltipConfType } from '../../menu-constructors/Tooltip'\nimport Editor from '../../../editor/index'\n\n/**\n * 生成 Tooltip 的显示隐藏函数\n */\nfunction createShowHideFn(editor: Editor) {\n let tooltip: Tooltip | null\n\n /**\n * 显示 tooltip\n * @param $link 链接元素\n */\n function showLinkTooltip($link: DomElement) {\n const conf: TooltipConfType = [\n {\n $elem: $(`<span>${editor.i18next.t('menus.panelMenus.link.查看链接')}</span>`),\n onClick: (editor: Editor, $link: DomElement) => {\n const link = $link.attr('href')\n window.open(link, '_target')\n\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $(`<span>${editor.i18next.t('menus.panelMenus.link.取消链接')}</span>`),\n onClick: (editor: Editor, $link: DomElement) => {\n // 选中链接元素\n editor.selection.createRangeByElem($link)\n editor.selection.restoreSelection()\n\n const $childNodes = $link.childNodes()\n // 如果链接是图片\n if ($childNodes?.getNodeName() === 'IMG') {\n // 获取选中的图片\n const $selectIMG = editor.selection.getSelectionContainerElem()?.children()\n ?.elems[0].children[0]\n // 插入图片\n editor.cmd.do(\n 'insertHTML',\n `<img \n src=${$selectIMG?.getAttribute('src')} \n style=${$selectIMG?.getAttribute('style')}>`\n )\n } else {\n // 用文字,替换链接\n const selectionText = $link.text()\n editor.cmd.do('insertHTML', '<span>' + selectionText + '</span>')\n }\n\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n ]\n\n // 创建 tooltip\n tooltip = new Tooltip(editor, $link, conf)\n tooltip.create()\n }\n\n /**\n * 隐藏 tooltip\n */\n function hideLinkTooltip() {\n // 移除 tooltip\n if (tooltip) {\n tooltip.remove()\n tooltip = null\n }\n }\n\n return {\n showLinkTooltip,\n hideLinkTooltip,\n }\n}\n\n/**\n * 绑定 tooltip 事件\n * @param editor 编辑器实例\n */\nfunction bindTooltipEvent(editor: Editor) {\n const { showLinkTooltip, hideLinkTooltip } = createShowHideFn(editor)\n\n // 点击链接元素是,显示 tooltip\n editor.txt.eventHooks.linkClickEvents.push(showLinkTooltip)\n\n // 点击其他地方,或者滚动时,隐藏 tooltip\n editor.txt.eventHooks.clickEvents.push(hideLinkTooltip)\n editor.txt.eventHooks.keyupEvents.push(hideLinkTooltip)\n editor.txt.eventHooks.toolbarClickEvents.push(hideLinkTooltip)\n editor.txt.eventHooks.menuClickEvents.push(hideLinkTooltip)\n editor.txt.eventHooks.textScrollEvents.push(hideLinkTooltip)\n}\n\nexport default bindTooltipEvent\n","/**\n * @description 斜体\n * @author liuwei\n */\n\nimport BtnMenu from '../menu-constructors/BtnMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nclass Italic extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"斜体\">\n <i class=\"w-e-icon-italic\"></i>\n </div>`\n )\n super($elem, editor)\n }\n\n /**\n * 点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n const isSelectEmpty = editor.selection.isSelectionEmpty()\n\n if (isSelectEmpty) {\n // 选区范围是空的,插入并选中一个“空白”\n editor.selection.createEmptyRange()\n }\n\n // 执行 italic 命令\n editor.cmd.do('italic')\n\n if (isSelectEmpty) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {\n const editor = this.editor\n if (editor.cmd.queryCommandState('italic')) {\n this.active()\n } else {\n this.unActive()\n }\n }\n}\n\nexport default Italic\n","/**\n * @description 下划线 underline\n * @author dyl\n *\n */\n\nimport BtnMenu from '../menu-constructors/BtnMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nclass Underline extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"下划线\">\n <i class=\"w-e-icon-underline\"></i>\n </div>`\n )\n super($elem, editor)\n }\n\n /**\n * 点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n const isSelectEmpty = editor.selection.isSelectionEmpty()\n\n if (isSelectEmpty) {\n // 选区范围是空的,插入并选中一个“空白”\n editor.selection.createEmptyRange()\n }\n\n // 执行 Underline 命令\n editor.cmd.do('underline')\n\n if (isSelectEmpty) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {\n const editor = this.editor\n if (editor.cmd.queryCommandState('underline')) {\n this.active()\n } else {\n this.unActive()\n }\n }\n}\n\nexport default Underline\n","/**\n * @description 删除线\n * @author lkw\n */\n\nimport BtnMenu from '../menu-constructors/BtnMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nclass StrikeThrough extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"删除线\">\n <i class=\"w-e-icon-strikethrough\"></i>\n </div>`\n )\n super($elem, editor)\n }\n\n /**\n * 点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n const isSelectEmpty = editor.selection.isSelectionEmpty()\n\n if (isSelectEmpty) {\n // 选区范围是空的,插入并选中一个“空白”\n editor.selection.createEmptyRange()\n }\n\n // 执行 strikeThrough 命令\n editor.cmd.do('strikeThrough')\n\n if (isSelectEmpty) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {\n const editor = this.editor\n if (editor.cmd.queryCommandState('strikeThrough')) {\n this.active()\n } else {\n this.unActive()\n }\n }\n}\n\nexport default StrikeThrough\n","/**\n * @description 字体样式 FontStyle\n * @author dyl\n *\n */\n\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport FontStyleList from './FontStyleList'\n\nclass FontStyle extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"字体\">\n <i class=\"w-e-icon-font\"></i>\n </div>`\n )\n let fontStyleList = new FontStyleList(editor.config.fontNames)\n const fontListConf = {\n width: 100,\n title: '设置字体',\n type: 'list',\n list: fontStyleList.getItemList(),\n clickHandler: (value: string) => {\n // this 是指向当前的 FontStyle 对象\n this.command(value)\n },\n }\n super($elem, editor, fontListConf)\n }\n\n /**\n * 执行命令\n * @param value value\n */\n public command(value: string): void {\n const editor = this.editor\n const isEmptySelection = editor.selection.isSelectionEmpty()\n\n const $selectionElem = editor.selection.getSelectionContainerElem()?.elems[0]\n\n if ($selectionElem == null) return\n\n const isFont = $selectionElem?.nodeName.toLowerCase() !== 'p'\n const isSameValue = $selectionElem?.getAttribute('face') === value\n\n if (isEmptySelection) {\n if (isFont && !isSameValue) {\n const $elems = editor.selection.getSelectionRangeTopNodes()\n editor.selection.createRangeByElem($elems[0])\n editor.selection.moveCursor($elems[0].elems[0])\n }\n editor.selection.setRangeToElem($selectionElem)\n // 插入空白选区\n editor.selection.createEmptyRange()\n }\n\n editor.cmd.do('fontName', value)\n\n if (isEmptySelection) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n * ?字体是否需要有激活状态这个操作?\n */\n public tryChangeActive(): void {\n // const editor = this.editor\n // const cmdValue = editor.cmd.queryCommandValue('fontName')\n // if (menusConfig.fontNames.indexOf(cmdValue) >= 0) {\n // this.active()\n // } else {\n // this.unActive()\n // }\n }\n}\n\nexport default FontStyle\n","/**\n * @description 字体 class\n * @author dyl\n */\nimport $ from '../../utils/dom-core'\nimport { FontStyleType } from '../../config/menus'\nimport { DropListItem } from '../menu-constructors/DropList'\n\n/**\n * 封装的一个字体菜单列表数据的组装对象,\n * 原因是因为在constructor函数中,直接执行此流程,会让代码量看起来较多,\n * 如果要在constructor调用外部函数,个人目前发现会有错误提示,\n * 因此,想着顺便研究实践下ts,遍创建了这样一个类\n */\nclass FontStyleList {\n private itemList: DropListItem[]\n constructor(list: FontStyleType) {\n this.itemList = []\n list.forEach(fontValue => {\n // fontValue 2种情况一种是string类型的直接value等同于font-family\n // Object类型value为font-family name为ui视图呈现\n const fontFamily = typeof fontValue === 'string' ? fontValue : fontValue.value\n const fontName = typeof fontValue === 'string' ? fontValue : fontValue.name\n this.itemList.push({\n $elem: $(`<p style=\"font-family:'${fontFamily}'\">${fontName}</p>`),\n value: fontName,\n })\n })\n }\n\n public getItemList(): DropListItem[] {\n return this.itemList\n }\n}\n\nexport default FontStyleList\n","/**\n * @description 字号 FontSize\n * @author lkw\n *\n */\n\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport FontSizeList from './FontSizeList'\n\nclass FontSize extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"字号\">\n <i class=\"w-e-icon-text-heigh\"></i>\n </div>`\n )\n let fontStyleList = new FontSizeList(editor.config.fontSizes)\n const fontListConf = {\n width: 160,\n title: '设置字号',\n type: 'list',\n list: fontStyleList.getItemList(),\n clickHandler: (value: string) => {\n // this 是指向当前的 FontSize 对象\n this.command(value)\n },\n }\n super($elem, editor, fontListConf)\n }\n\n /**\n * 执行命令\n * @param value value\n */\n public command(value: string): void {\n const editor = this.editor\n const isEmptySelection = editor.selection.isSelectionEmpty()\n\n let selectionElem = editor.selection.getSelectionContainerElem()?.elems[0]\n\n if (selectionElem == null) return\n\n editor.cmd.do('fontSize', value)\n if (isEmptySelection) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n * ?字号是否需要有激活状态这个操作?\n */\n public tryChangeActive(): void {}\n}\n\nexport default FontSize\n","/**\n * @description 字号 class\n * @author lkw\n */\nimport $ from '../../utils/dom-core'\nimport { DropListItem } from '../menu-constructors/DropList'\nimport { FontSizeConfType } from '../../config/menus'\n\n/**\n * FontSizeList 字号配置列表\n */\nclass FontSizeList {\n private itemList: DropListItem[]\n\n constructor(list: FontSizeConfType) {\n this.itemList = []\n for (let key in list) {\n const item = list[key]\n this.itemList.push({\n $elem: $(`<p style=\"font-size:${key}\">${item.name}</p>`),\n value: item.value,\n })\n }\n }\n\n public getItemList(): DropListItem[] {\n return this.itemList\n }\n}\n\nexport default FontSizeList\n","/**\n * @description 对齐方式\n * @author liuwei\n */\n\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nconst SPECIAL_NODE_LIST = ['LI']\nconst SPECIAL_TOP_NODE_LIST = ['UL', 'BLOCKQUOTE']\n\nclass Justify extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n '<div class=\"w-e-menu\" data-title=\"对齐\"><i class=\"w-e-icon-paragraph-left\"></i></div>'\n )\n\n const dropListConf = {\n width: 100,\n title: '对齐方式',\n type: 'list', // droplist 以列表形式展示\n list: [\n {\n $elem: $(\n `<p>\n <i class=\"w-e-icon-paragraph-left w-e-drop-list-item\"></i>\n ${editor.i18next.t('menus.dropListMenu.justify.靠左')}\n </p>`\n ),\n value: 'left',\n },\n {\n $elem: $(\n `<p>\n <i class=\"w-e-icon-paragraph-center w-e-drop-list-item\"></i>\n ${editor.i18next.t('menus.dropListMenu.justify.居中')}\n </p>`\n ),\n value: 'center',\n },\n {\n $elem: $(\n `<p>\n <i class=\"w-e-icon-paragraph-right w-e-drop-list-item\"></i>\n ${editor.i18next.t('menus.dropListMenu.justify.靠右')}\n </p>`\n ),\n value: 'right',\n },\n {\n $elem: $(\n `<p>\n <i class=\"w-e-icon-paragraph-justify w-e-drop-list-item\"></i>\n ${editor.i18next.t('menus.dropListMenu.justify.两端')}\n </p>`\n ),\n value: 'justify',\n },\n ],\n clickHandler: (value: string) => {\n // 执行对应的value操作\n this.command(value)\n },\n }\n super($elem, editor, dropListConf)\n }\n /**\n * 执行命令\n * @param value value\n */\n public command(value: string): void {\n const editor = this.editor\n const selection = editor.selection\n const $selectionElem = selection.getSelectionContainerElem()\n\n // 保存选区\n selection.saveRange()\n\n // 获取顶级元素\n const $elems = editor.selection.getSelectionRangeTopNodes()\n if ($selectionElem?.length) {\n // list 在chrome下默认多包裹一个 p导致不能通过顶层元素判断所以单独加个判断\n if (this.isSpecialNode($selectionElem, $elems[0]) || this.isSpecialTopNode($elems[0])) {\n const el = this.getSpecialNodeUntilTop($selectionElem, $elems[0])\n if (el == null) return\n\n $(el).css('text-align', value)\n } else {\n $elems.forEach((el: DomElement) => {\n el.css('text-align', value)\n })\n }\n }\n //恢复选区\n selection.restoreSelection()\n }\n\n /**\n * 获取选区中的特殊元素,如果不存在,则直接返回顶层元素子元素\n * @param el DomElement\n * @param topEl DomElement\n */\n private getSpecialNodeUntilTop(el: DomElement, topEl: DomElement) {\n let parentNode: Node | null = el.elems[0]\n const topNode = topEl.elems[0]\n // 可能出现嵌套的情况,所以一级一级向上找,是否是特殊元素\n while (parentNode != null) {\n if (SPECIAL_NODE_LIST.indexOf(parentNode?.nodeName) !== -1) {\n return parentNode\n }\n // 如果再到 top 元素之前还没找到特殊元素,直接返回元素\n if (parentNode.parentNode === topNode) {\n return parentNode\n }\n parentNode = parentNode.parentNode\n }\n return parentNode\n }\n\n /**\n * 当选区元素或者顶层元素是某些特殊元素时,只需要修改子元素的对齐样式的元素\n * @param el DomElement\n * @param topEl DomElement\n */\n private isSpecialNode(el: DomElement, topEl: DomElement) {\n // 如果以后有类似的元素要这样处理,直接修改这个数组即可\n const parentNode = this.getSpecialNodeUntilTop(el, topEl)\n\n if (parentNode == null) return false\n\n return SPECIAL_NODE_LIST.indexOf(parentNode.nodeName) !== -1\n }\n\n /**\n * 当选区 top 元素为某些特殊元素时,只需要修改子元素的对齐样式的元素\n * @param el DomElement\n */\n private isSpecialTopNode(topEl: DomElement) {\n if (topEl == null) return false\n\n return SPECIAL_TOP_NODE_LIST.indexOf(topEl.elems[0]?.nodeName) !== -1\n }\n\n /**\n * 尝试改变菜单激活(高亮)状态\n * 默认左对齐,若选择其他对其方式对active进行高亮否则unActive\n * ?考虑优化的话 是否可以对具体选中的进行高亮\n */\n public tryChangeActive(): void {}\n}\n\nexport default Justify\n","/**\n * @description 引用\n * @author tonghan\n */\n\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport BtnMenu from '../menu-constructors/BtnMenu'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport bindEvent from './bind-event'\nimport createQuote from './create-quote-node'\nimport { EMPTY_P } from '../../utils/const'\n\nclass Quote extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"引用\">\n <i class=\"w-e-icon-quotes-left\"></i>\n </div>`\n )\n super($elem, editor)\n bindEvent(editor)\n }\n\n /**\n * 点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n const isSelectEmpty = editor.selection.isSelectionEmpty()\n let topNodeElem: DomElement[] = editor.selection.getSelectionRangeTopNodes()\n const $topNodeElem: DomElement = topNodeElem[topNodeElem.length - 1]\n const nodeName = this.getTopNodeName()\n // IE 中不支持 formatBlock <BLOCKQUOTE> ,要用其他方式兼容\n // 兼容firefox无法取消blockquote的问题\n if (nodeName === 'BLOCKQUOTE') {\n // 撤销 quote\n const $targetELem = $($topNodeElem.childNodes())\n const len = $targetELem.length\n let $middle = $topNodeElem\n $targetELem.forEach((elem: Node) => {\n const $elem = $(elem)\n $elem.insertAfter($middle)\n $middle = $elem\n })\n $topNodeElem.remove()\n editor.selection.moveCursor($targetELem.elems[len - 1])\n // 即时更新btn状态\n this.tryChangeActive()\n } else {\n // 将 P 转换为 quote\n\n /**\n @author:gavin\n @description \n 1. 解决ctrl+a全选删除后选区错位的问题。\n 2. 或者内容清空,按删除键后,选区错位。\n\n 导致topNodeElem选择的是编辑器顶层元素在进行dom操作时quote插入的位置有问题。\n **/\n let $quote = createQuote(topNodeElem)\n\n //如果选择的元素时顶层元素,就将选区移动到正确的位置\n if (editor.$textElem.equal($topNodeElem)) {\n const containerElem = editor.selection.getSelectionContainerElem()?.elems[0]!\n editor.selection.createRangeByElems(\n containerElem.children[0],\n containerElem.children[0]\n )\n\n topNodeElem = editor.selection.getSelectionRangeTopNodes()\n $quote = createQuote(topNodeElem)\n $topNodeElem.append($quote)\n } else {\n $quote.insertAfter($topNodeElem)\n }\n\n this.delSelectNode(topNodeElem)\n const moveNode = $quote.childNodes()?.last().getNode() as Node\n\n if (moveNode == null) return\n\n // 兼容firefoxfirefox下空行情况下选区会在br后造成自动换行的问题\n moveNode.textContent\n ? editor.selection.moveCursor(moveNode)\n : editor.selection.moveCursor(moveNode, 0)\n // 即时更新btn状态\n this.tryChangeActive()\n // 防止最后一行无法跳出\n $(EMPTY_P).insertAfter($quote)\n return\n }\n\n if (isSelectEmpty) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {\n const editor = this.editor\n const cmdValue = editor.selection.getSelectionRangeTopNodes()[0]?.getNodeName()\n if (cmdValue === 'BLOCKQUOTE') {\n this.active()\n } else {\n this.unActive()\n }\n }\n\n /**\n * 获取包裹在最外层的节点(防止内部嵌入多个样式)\n * @param selectionElem 选中的节点\n * @returns {string} 最终要处理的节点名称\n */\n private getTopNodeName(): string {\n const editor = this.editor\n const $topNodeElem = editor.selection.getSelectionRangeTopNodes()[0]\n const nodeName = $topNodeElem?.getNodeName()\n\n return nodeName\n }\n\n /**\n * 删除选中的元素\n * @param selectElem 选中的元素节点数组\n */\n private delSelectNode(selectElem: DomElement[]) {\n selectElem.forEach(node => {\n node.remove()\n })\n }\n}\n\nexport default Quote\n","import { EMPTY_P } from '../../../utils/const'\nimport Editor from '../../../editor/index'\nimport $, { DomElement } from '../../../utils/dom-core'\nfunction bindEvent(editor: Editor) {\n function quoteEnter(e: Event) {\n const $selectElem = editor.selection.getSelectionContainerElem() as DomElement\n const $topSelectElem = editor.selection.getSelectionRangeTopNodes()[0]\n // 对quote的enter进行特殊处理\n //最后一行为空标签时再按会出跳出blockquote\n if ($topSelectElem?.getNodeName() === 'BLOCKQUOTE') {\n // firefox下点击引用按钮会选中外容器<blockquote></blockquote>\n if ($selectElem.getNodeName() === 'BLOCKQUOTE') {\n const selectNode = $selectElem.childNodes()?.getNode() as Node\n editor.selection.moveCursor(selectNode)\n }\n if ($selectElem.text() === '') {\n e.preventDefault()\n $selectElem.remove()\n const $newLine = $(EMPTY_P)\n $newLine.insertAfter($topSelectElem)\n // 将光标移动br前面\n editor.selection.moveCursor($newLine.getNode(), 0)\n }\n\n // 当blockQuote中没有内容回车后移除blockquote\n if ($topSelectElem.text() === '') {\n $topSelectElem.remove()\n }\n }\n }\n editor.txt.eventHooks.enterDownEvents.push(quoteEnter)\n}\n\nexport default bindEvent\n","import $, { DomElement } from '../../utils/dom-core'\n\n/**\n * 创建一个blockquote元素节点\n * @param editor 编辑器实例\n */\nfunction createQuote($childElem: DomElement[]): DomElement {\n const $targetElem = $(`<blockquote></blockquote>`)\n $childElem.forEach(node => {\n $targetElem.append(node.clone(true))\n })\n return $targetElem\n}\n\nexport default createQuote\n","/**\n * @description 背景颜色 BackColor\n * @author lkw\n *\n */\n\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport { hexToRgb } from '../../utils/util'\nclass BackColor extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"背景色\">\n <i class=\"w-e-icon-paint-brush\"></i>\n </div>`\n )\n const colorListConf = {\n width: 120,\n title: '背景颜色',\n // droplist 内容以 block 形式展示\n type: 'inline-block',\n list: editor.config.colors.map(color => {\n return {\n $elem: $(`<i style=\"color:${color};\" class=\"w-e-icon-paint-brush\"></i>`),\n value: color,\n }\n }),\n clickHandler: (value: string) => {\n // this 是指向当前的 BackColor 对象\n this.command(value)\n },\n }\n super($elem, editor, colorListConf)\n }\n\n /**\n * 执行命令\n * @param value value\n */\n public command(value: string): void {\n const editor = this.editor\n const isEmptySelection = editor.selection.isSelectionEmpty()\n const $selectionElem = editor.selection.getSelectionContainerElem()?.elems[0]\n\n if ($selectionElem == null) return\n\n const isSpan = $selectionElem?.nodeName.toLowerCase() !== 'p'\n const bgColor = $selectionElem?.style.backgroundColor\n const isSameColor = hexToRgb(value) === bgColor\n\n if (isEmptySelection) {\n if (isSpan && !isSameColor) {\n const $elems = editor.selection.getSelectionRangeTopNodes()\n editor.selection.createRangeByElem($elems[0])\n editor.selection.moveCursor($elems[0].elems[0])\n }\n // 插入空白选区\n editor.selection.createEmptyRange()\n }\n\n editor.cmd.do('backColor', value)\n\n if (isEmptySelection) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {}\n}\n\nexport default BackColor\n","/**\n * @description 文字颜色 FontColor\n * @author lkw\n *\n */\n\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nclass FontColor extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"文字颜色\">\n <i class=\"w-e-icon-pencil2\"></i>\n </div>`\n )\n const colorListConf = {\n width: 120,\n title: '文字颜色',\n // droplist 内容以 block 形式展示\n type: 'inline-block',\n list: editor.config.colors.map(color => {\n return {\n $elem: $(`<i style=\"color:${color};\" class=\"w-e-icon-pencil2\"></i>`),\n value: color,\n }\n }),\n clickHandler: (value: string) => {\n // this 是指向当前的 BackColor 对象\n this.command(value)\n },\n }\n super($elem, editor, colorListConf)\n }\n\n /**\n * 执行命令\n * @param value value\n */\n public command(value: string): void {\n const editor = this.editor\n const isEmptySelection = editor.selection.isSelectionEmpty()\n const $selectionElem = editor.selection.getSelectionContainerElem()?.elems[0]\n\n if ($selectionElem == null) return\n\n // 获取选区范围的文字\n const $selectionText = editor.selection.getSelectionText()\n // 如果设置的是 a 标签就特殊处理一下,避免回车换行设置颜色无效的情况\n // 只处理选中a标签内全部文字的情况因为选中部分文字不存在换行颜色失效的情况\n if ($selectionElem.nodeName === 'A' && $selectionElem.textContent === $selectionText) {\n // 创建一个相当于占位的元素\n const _payloadElem = $('<span>&#8203;</span>').getNode()\n // 添加到a标签之后\n $selectionElem.appendChild(_payloadElem)\n }\n editor.cmd.do('foreColor', value)\n\n if (isEmptySelection) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {}\n}\n\nexport default FontColor\n","/**\n * @description 视频 菜单\n * @author tonghan\n */\n\nimport $ from '../../utils/dom-core'\nimport Panel from '../menu-constructors/Panel'\nimport Editor from '../../editor/index'\nimport PanelMenu from '../menu-constructors/PanelMenu'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport createPanelConf from './create-panel-conf'\nimport bindEvent from './bind-event/index'\n\nclass Video extends PanelMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"视频\">\n <i class=\"w-e-icon-play\"></i>\n </div>`\n )\n super($elem, editor)\n\n // 绑定事件 tootip\n bindEvent(editor)\n }\n\n /**\n * 菜单点击事件\n */\n public clickHandler(): void {\n // 弹出 panel\n this.createPanel('')\n }\n\n /**\n * 创建 panel\n * @param link 链接\n */\n private createPanel(iframe: string): void {\n const conf = createPanelConf(this.editor, iframe)\n const panel = new Panel(this, conf)\n panel.create()\n }\n\n /**\n * 尝试修改菜单 active 状态\n */\n public tryChangeActive() {}\n}\n\nexport default Video\n","/**\n * @description video 菜单 panel tab 配置\n * @author tonghan\n */\n\nimport Editor from '../../editor/index'\nimport { PanelConf, PanelTabConf } from '../menu-constructors/Panel'\nimport { getRandom } from '../../utils/util'\nimport $ from '../../utils/dom-core'\nimport UploadVideo from './upload-video'\nimport { EMPTY_P } from '../../utils/const'\n\nexport default function (editor: Editor, video: string): PanelConf {\n const config = editor.config\n const uploadVideo = new UploadVideo(editor)\n\n // panel 中需要用到的id\n const inputIFrameId = getRandom('input-iframe')\n const btnOkId = getRandom('btn-ok')\n const inputUploadId = getRandom('input-upload')\n const btnStartId = getRandom('btn-local-ok')\n\n /**\n * 插入链接\n * @param iframe html标签\n */\n function insertVideo(video: string): void {\n editor.cmd.do('insertHTML', video + EMPTY_P)\n\n // video添加后的回调\n editor.config.onlineVideoCallback(video)\n }\n\n /**\n * 校验在线视频链接\n * @param video 在线视频链接\n */\n function checkOnlineVideo(video: string): boolean {\n // 查看开发者自定义配置的返回值\n const check = editor.config.onlineVideoCheck(video)\n if (check === true) {\n return true\n }\n if (typeof check === 'string') {\n //用户未能通过开发者的校验,开发者希望我们提示这一字符串\n editor.config.customAlert(check, 'error')\n }\n return false\n }\n\n // tabs配置\n // const fileMultipleAttr = config.uploadVideoMaxLength === 1 ? '' : 'multiple=\"multiple\"'\n const tabsConf: PanelTabConf[] = [\n {\n // tab 的标题\n title: editor.i18next.t('menus.panelMenus.video.上传视频'),\n tpl: `<div class=\"w-e-up-video-container\">\n <div id=\"${btnStartId}\" class=\"w-e-up-btn\">\n <i class=\"w-e-icon-upload2\"></i>\n </div>\n <div style=\"display:none;\">\n <input id=\"${inputUploadId}\" type=\"file\" accept=\"video/*\"/>\n </div>\n </div>`,\n events: [\n // 触发选择视频\n {\n selector: '#' + btnStartId,\n type: 'click',\n fn: () => {\n const $file = $('#' + inputUploadId)\n const fileElem = $file.elems[0]\n if (fileElem) {\n fileElem.click()\n } else {\n // 返回 true 可关闭 panel\n return true\n }\n },\n },\n // 选择视频完毕\n {\n selector: '#' + inputUploadId,\n type: 'change',\n fn: () => {\n const $file = $('#' + inputUploadId)\n const fileElem = $file.elems[0]\n if (!fileElem) {\n // 返回 true 可关闭 panel\n return true\n }\n\n // 获取选中的 file 对象列表\n const fileList = (fileElem as any).files\n if (fileList.length) {\n uploadVideo.uploadVideo(fileList)\n }\n\n // 返回 true 可关闭 panel\n return true\n },\n },\n ],\n },\n {\n // tab 的标题\n title: editor.i18next.t('menus.panelMenus.video.插入视频'),\n // 模板\n tpl: `<div>\n <input \n id=\"${inputIFrameId}\" \n type=\"text\" \n class=\"block\" \n placeholder=\"${editor.i18next.t('如')}<iframe src=... ></iframe>\"/>\n </td>\n <div class=\"w-e-button-container\">\n <button type=\"button\" id=\"${btnOkId}\" class=\"right\">\n ${editor.i18next.t('插入')}\n </button>\n </div>\n </div>`,\n // 事件绑定\n events: [\n // 插入视频\n {\n selector: '#' + btnOkId,\n type: 'click',\n fn: () => {\n // 执行插入视频\n const $video = $('#' + inputIFrameId)\n let video = $video.val().trim()\n\n // 视频为空,则不插入\n if (!video) return\n // 对当前用户插入的内容进行判断插入为空或者返回false都停止插入\n if (!checkOnlineVideo(video)) return\n\n insertVideo(video)\n\n // 返回 true表示该事件执行完之后panel 要关闭。否则 panel 不会关闭\n return true\n },\n bindEnter: true,\n },\n ],\n }, // tab end\n ]\n\n const conf: PanelConf = {\n width: 300,\n height: 0,\n\n // panel 中可包含多个 tab\n tabs: [], // tabs end\n }\n\n // 显示“上传视频”\n if (window.FileReader && (config.uploadVideoServer || config.customUploadVideo)) {\n conf.tabs.push(tabsConf[0])\n }\n // 显示“插入视频”\n if (config.showLinkVideo) {\n conf.tabs.push(tabsConf[1])\n }\n\n return conf\n}\n","/**\n * @description 上传视频\n * @author lichunlin\n */\n\nimport Editor from '../../editor/index'\nimport { arrForEach, forEach } from '../../utils/util'\nimport post from '../../editor/upload/upload-core'\nimport Progress from '../../editor/upload/progress'\nimport { EMPTY_P } from '../../utils/const'\nimport { UA } from '../../utils/util'\n\ntype ResData = {\n url: string\n}\n\n// 后台返回的格式\nexport type ResType = {\n errno: number | string\n data: ResData\n}\n\nclass UploadVideo {\n private editor: Editor\n\n constructor(editor: Editor) {\n this.editor = editor\n }\n\n /**\n * 上传视频\n * @param files 文件列表\n */\n public uploadVideo(files: FileList | File[]): void {\n if (!files.length) {\n return\n }\n\n const editor = this.editor\n const config = editor.config\n\n // ------------------------------ i18next ------------------------------\n\n const i18nPrefix = 'validate.'\n const t = (text: string): string => {\n return editor.i18next.t(i18nPrefix + text)\n }\n\n // ------------------------------ 获取配置信息 ------------------------------\n // 服务端地址\n let uploadVideoServer = config.uploadVideoServer\n // 上传视频的最大体积,默认 1024M\n const maxSize = config.uploadVideoMaxSize\n const uploadVideoMaxSize = maxSize / 1024\n // 一次最多上传多少个视频\n // const uploadVideoMaxLength = config.uploadVideoMaxLength\n // 自定义上传视频的名称\n const uploadVideoName = config.uploadVideoName\n // 上传视频自定义参数\n const uploadVideoParams = config.uploadVideoParams\n // 自定义参数拼接到 url 中\n const uploadVideoParamsWithUrl = config.uploadVideoParamsWithUrl\n // 上传视频自定义 header\n const uploadVideoHeaders = config.uploadVideoHeaders\n // 钩子函数\n const uploadVideoHooks = config.uploadVideoHooks\n // 上传视频超时时间 ms 默认2个小时\n const uploadVideoTimeout = config.uploadVideoTimeout\n // 跨域带 cookie\n const withVideoCredentials = config.withVideoCredentials\n // 自定义上传\n const customUploadVideo = config.customUploadVideo\n // 格式校验\n const uploadVideoAccept = config.uploadVideoAccept\n\n // ------------------------------ 验证文件信息 ------------------------------\n const resultFiles: File[] = []\n const errInfos: string[] = []\n arrForEach(files, file => {\n const name = file.name\n const size = file.size / 1024 / 1024\n\n // chrome 低版本 name === undefined\n if (!name || !size) {\n return\n }\n\n if (!(uploadVideoAccept instanceof Array)) {\n // 格式不是数组\n errInfos.push(`【${uploadVideoAccept}】${t('uploadVideoAccept 不是Array')}`)\n return\n }\n\n if (\n !uploadVideoAccept.some(\n item => item === name.split('.')[name.split('.').length - 1]\n )\n ) {\n // 后缀名不合法,不是视频\n errInfos.push(`【${name}】${t('不是视频')}`)\n return\n }\n\n if (uploadVideoMaxSize < size) {\n // 上传视频过大\n errInfos.push(`【${name}】${t('大于')} ${uploadVideoMaxSize}M`)\n return\n }\n //验证通过的加入结果列表\n resultFiles.push(file)\n })\n // 抛出验证信息\n if (errInfos.length) {\n config.customAlert(`${t('视频验证未通过')}: \\n` + errInfos.join('\\n'), 'warning')\n return\n }\n // 如果过滤后文件列表为空直接返回\n if (resultFiles.length === 0) {\n config.customAlert(t('传入的文件不合法'), 'warning')\n return\n }\n\n // ------------------------------ 自定义上传 ------------------------------\n if (customUploadVideo && typeof customUploadVideo === 'function') {\n customUploadVideo(resultFiles, this.insertVideo.bind(this))\n return\n }\n\n // 添加视频数据\n const formData = new FormData()\n resultFiles.forEach((file: File, index: number) => {\n let name = uploadVideoName || file.name\n if (resultFiles.length > 1) {\n // 多个文件时filename 不能重复\n name = name + (index + 1)\n }\n formData.append(name, file)\n })\n\n // ------------------------------ 上传视频 ------------------------------\n\n //添加自定义参数 基于有服务端地址的情况下\n if (uploadVideoServer) {\n // 添加自定义参数\n const uploadVideoServerArr = uploadVideoServer.split('#')\n uploadVideoServer = uploadVideoServerArr[0]\n const uploadVideoServerHash = uploadVideoServerArr[1] || ''\n forEach(uploadVideoParams, (key: string, val: string) => {\n // 因使用者反应,自定义参数不能默认 encode ,由 v3.1.1 版本开始注释掉\n // val = encodeURIComponent(val)\n\n // 第一,将参数拼接到 url 中\n if (uploadVideoParamsWithUrl) {\n if (uploadVideoServer.indexOf('?') > 0) {\n uploadVideoServer += '&'\n } else {\n uploadVideoServer += '?'\n }\n uploadVideoServer = uploadVideoServer + key + '=' + val\n }\n\n // 第二,将参数添加到 formData 中\n formData.append(key, val)\n })\n if (uploadVideoServerHash) {\n uploadVideoServer += '#' + uploadVideoServerHash\n }\n\n // 开始上传\n const xhr = post(uploadVideoServer, {\n timeout: uploadVideoTimeout,\n formData,\n headers: uploadVideoHeaders,\n withCredentials: !!withVideoCredentials,\n beforeSend: xhr => {\n if (uploadVideoHooks.before)\n return uploadVideoHooks.before(xhr, editor, resultFiles)\n },\n onTimeout: xhr => {\n config.customAlert(t('上传视频超时'), 'error')\n if (uploadVideoHooks.timeout) uploadVideoHooks.timeout(xhr, editor)\n },\n onProgress: (percent, e) => {\n const progressBar = new Progress(editor)\n if (e.lengthComputable) {\n percent = e.loaded / e.total\n progressBar.show(percent)\n }\n },\n onError: xhr => {\n config.customAlert(\n t('上传视频错误'),\n 'error',\n `${t('上传视频错误')}${t('服务器返回状态')}: ${xhr.status}`\n )\n if (uploadVideoHooks.error) uploadVideoHooks.error(xhr, editor)\n },\n onFail: (xhr, resultStr) => {\n config.customAlert(\n t('上传视频失败'),\n 'error',\n t('上传视频返回结果错误') + `${t('返回结果')}: ` + resultStr\n )\n if (uploadVideoHooks.fail) uploadVideoHooks.fail(xhr, editor, resultStr)\n },\n onSuccess: (xhr, result: ResType) => {\n if (uploadVideoHooks.customInsert) {\n // 自定义插入视频\n uploadVideoHooks.customInsert(this.insertVideo.bind(this), result, editor)\n return\n }\n if (result.errno != '0') {\n // 返回格式不对,应该为 { errno: 0, data: [...] }\n config.customAlert(\n t('上传视频失败'),\n 'error',\n `${t('上传视频返回结果错误')}${t('返回结果')} errno=${result.errno}`\n )\n if (uploadVideoHooks.fail) uploadVideoHooks.fail(xhr, editor, result)\n return\n }\n\n // 成功,插入视频\n const data = result.data\n\n this.insertVideo(data.url)\n\n // 钩子函数\n if (uploadVideoHooks.success) uploadVideoHooks.success(xhr, editor, result)\n },\n })\n if (typeof xhr === 'string') {\n // 上传被阻止\n config.customAlert(xhr, 'error')\n }\n }\n }\n\n /**\n * 往编辑器区域插入视频\n * @param url 视频访问地址\n */\n public insertVideo(url: string): void {\n const editor = this.editor\n const config = editor.config\n\n const i18nPrefix = 'validate.'\n const t = (text: string, prefix: string = i18nPrefix): string => {\n return editor.i18next.t(prefix + text)\n }\n\n // 判断用户是否自定义插入视频\n if (!config.customInsertVideo) {\n if (UA.isFirefox) {\n editor.cmd.do(\n 'insertHTML',\n `<p data-we-video-p=\"true\"><video src=\"${url}\" controls=\"controls\" style=\"max-width:100%\"></video></p><p>&#8203</p>`\n )\n } else {\n editor.cmd.do(\n 'insertHTML',\n `<video src=\"${url}\" controls=\"controls\" style=\"max-width:100%\"></video>${EMPTY_P}`\n )\n }\n } else {\n config.customInsertVideo(url)\n return\n }\n\n // 加载视频\n let video: any = document.createElement('video')\n video.onload = () => {\n video = null\n }\n video.onerror = () => {\n config.customAlert(\n t('插入视频错误'),\n 'error',\n `wangEditor: ${t('插入视频错误')}${t('视频链接')} \"${url}\"${t('下载链接失败')}`\n )\n video = null\n }\n video.onabort = () => (video = null)\n video.src = url\n }\n}\n\nexport default UploadVideo\n","module.exports = require(\"core-js-pure/stable/date/now\");","var parent = require('../../es/date/now');\n\nmodule.exports = parent;\n","require('../../modules/es.date.now');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Date.now;\n","var $ = require('../internals/export');\n\n// `Date.now` method\n// https://tc39.es/ecma262/#sec-date.now\n$({ target: 'Date', stat: true }, {\n now: function now() {\n return new Date().getTime();\n }\n});\n","/**\n * @description 绑定视频的事件\n * @author lichunlin\n */\n\nimport Editor from '../../../editor/index'\nimport bindTooltipVideo from './tooltip-event'\nimport bindEventKeyboardEvent from './keyboard'\n\n/**\n * 绑定事件\n * @param editor 编辑器实例\n */\nfunction bindEvent(editor: Editor): void {\n //Tooltip\n bindTooltipVideo(editor)\n bindEventKeyboardEvent(editor)\n}\n\nexport default bindEvent\n","/**\n * @description tooltip 事件\n * @author lichunlin\n */\n\nimport $, { DomElement } from '../../../utils/dom-core'\nimport Tooltip, { TooltipConfType } from '../../menu-constructors/Tooltip'\nimport Editor from '../../../editor/index'\nimport setAlignment from './video-alignment'\n\n/**\n * 生成 Tooltip 的显示隐藏函数\n */\nexport function createShowHideFn(editor: Editor) {\n let tooltip: Tooltip | null\n const t = (text: string, prefix: string = ''): string => {\n return editor.i18next.t(prefix + text)\n }\n /**\n * 显示 tooltip\n * @param $node 链接元素\n */\n function showVideoTooltip($node: DomElement) {\n const conf: TooltipConfType = [\n {\n $elem: $(\"<span class='w-e-icon-trash-o'></span>\"),\n onClick: (editor: Editor, $node: DomElement) => {\n // 选中video元素 删除\n $node.remove()\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $('<span>100%</span>'),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.attr('width', '100%')\n $node.removeAttr('height')\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $('<span>50%</span>'),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.attr('width', '50%')\n $node.removeAttr('height')\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $('<span>30%</span>'),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.attr('width', '30%')\n $node.removeAttr('height')\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $(`<span>${t('重置')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.removeAttr('width')\n $node.removeAttr('height')\n\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $(`<span>${t('menus.justify.靠左')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n // 获取顶级元素\n setAlignment($node, 'left')\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $(`<span>${t('menus.justify.居中')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n // 获取顶级元素\n setAlignment($node, 'center')\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $(`<span>${t('menus.justify.靠右')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n // 获取顶级元素\n setAlignment($node, 'right')\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n ]\n\n tooltip = new Tooltip(editor, $node, conf)\n tooltip.create()\n }\n\n /**\n * 隐藏 tooltip\n */\n function hideVideoTooltip() {\n // 移除 tooltip\n if (tooltip) {\n tooltip.remove()\n tooltip = null\n }\n }\n\n return {\n showVideoTooltip,\n hideVideoTooltip,\n }\n}\n\n/**\n * 绑定 tooltip 事件\n * @param editor 编辑器实例\n */\nexport default function bindTooltipEvent(editor: Editor) {\n const { showVideoTooltip, hideVideoTooltip } = createShowHideFn(editor)\n\n // 点击视频元素是,显示 tooltip\n editor.txt.eventHooks.videoClickEvents.push(showVideoTooltip)\n\n // 点击其他地方,或者滚动时,隐藏 tooltip\n editor.txt.eventHooks.clickEvents.push(hideVideoTooltip)\n editor.txt.eventHooks.keyupEvents.push(hideVideoTooltip)\n editor.txt.eventHooks.toolbarClickEvents.push(hideVideoTooltip)\n editor.txt.eventHooks.menuClickEvents.push(hideVideoTooltip)\n editor.txt.eventHooks.textScrollEvents.push(hideVideoTooltip)\n\n // change 时隐藏\n editor.txt.eventHooks.changeEvents.push(hideVideoTooltip)\n}\n","/**\n * @description 视频布局 事件\n * @author lichunlin\n */\n\nimport $, { DomElement } from '../../../utils/dom-core'\n\n// 设置布局方式\nexport default function setAlignment($node: DomElement, value: string) {\n // 设置顶级元素匹配\n const NODENAME = ['P']\n // 获取匹配得顶级元素\n const topNode = getSelectedTopNode($node, NODENAME)\n // 判断是否存在\n if (topNode) {\n $(topNode).css('text-align', value)\n }\n}\n\n/**\n * 获取选中的元素的顶级元素\n * @params el 选中的元素\n * @params tag 匹配顶级的元素 如 P LI ....\n */\nfunction getSelectedTopNode(el: DomElement, tag: string[]): Node | null {\n let parentNode: Node | null = el.elems[0]\n // 可能出现嵌套的情况,所以一级一级向上找,找到指定得顶级元素\n while (parentNode != null) {\n if (tag.includes(parentNode?.nodeName)) {\n return parentNode\n }\n // 兜底 body\n if (parentNode?.parentNode?.nodeName === 'BODY') {\n return null\n }\n parentNode = parentNode.parentNode\n }\n return parentNode\n}\n","/**\n * @description 兼容火狐浏览器内核有video标签时光标定位不对问题\n * @author yanbiao(86driver)\n */\nimport Editor from '../../../editor/index'\nimport { UA } from '../../../utils/util'\n\nexport default function bindEventKeyboardEvent(editor: Editor) {\n if (!UA.isFirefox) return\n const { txt, selection } = editor\n const { keydownEvents } = txt.eventHooks\n\n keydownEvents.push(function (e) {\n // 实时保存选区\n // editor.selection.saveRange()\n const $selectionContainerElem = selection.getSelectionContainerElem()\n if ($selectionContainerElem) {\n const $topElem = $selectionContainerElem.getNodeTop(editor)\n const $preElem = $topElem.length\n ? $topElem.prev().length\n ? $topElem.prev()\n : null\n : null\n if ($preElem && $preElem.attr('data-we-video-p')) {\n // 光标处于选区开头\n if (selection.getCursorPos() === 0) {\n // 如果上一个dom是包含video 按下删除连video一块删除\n if (e.keyCode === 8) {\n $preElem.remove()\n }\n }\n }\n }\n })\n}\n","/**\n * @description 插入、上传图片\n * @author wangfupeng\n */\n\nimport Editor from '../../editor/index'\nimport { EMPTY_FN } from '../../utils/const'\nimport $ from '../../utils/dom-core'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport Panel from '../menu-constructors/Panel'\nimport PanelMenu from '../menu-constructors/PanelMenu'\nimport bindEvent from './bind-event/index'\nimport createPanelConf, { ImgPanelConf } from './create-panel-conf'\n\nclass Image extends PanelMenu implements MenuActive {\n private imgPanelConfig: ImgPanelConf\n\n constructor(editor: Editor) {\n let $elem = $(\n '<div class=\"w-e-menu\" data-title=\"图片\"><i class=\"w-e-icon-image\"></i></div>'\n )\n let imgPanelConfig = createPanelConf(editor)\n if (imgPanelConfig.onlyUploadConf) {\n $elem = imgPanelConfig.onlyUploadConf.$elem\n imgPanelConfig.onlyUploadConf.events.map(event => {\n const type = event.type\n const fn = event.fn || EMPTY_FN\n $elem.on(type, (e: Event) => {\n e.stopPropagation()\n fn(e)\n })\n })\n }\n super($elem, editor)\n this.imgPanelConfig = imgPanelConfig\n\n // 绑定事件,如粘贴图片\n bindEvent(editor)\n }\n\n /**\n * 菜单点击事件\n */\n public clickHandler(): void {\n if (!this.imgPanelConfig.onlyUploadConf) {\n this.createPanel()\n }\n }\n\n /**\n * 创建 panel\n */\n private createPanel(): void {\n const conf = this.imgPanelConfig\n const panel = new Panel(this, conf)\n this.setPanel(panel)\n panel.create()\n }\n\n /**\n * 尝试修改菜单 active 状态\n */\n public tryChangeActive() {}\n}\n\nexport default Image\n","/**\n * @description 绑定图片的事件\n * @author wangfupeng\n */\n\nimport Editor from '../../../editor/index'\nimport bindPasteImg from './paste-img'\nimport bindDropImg from './drop-img'\nimport bindDragImgSize from './drag-size'\nimport bindTooltipImg from './tooltip-event'\nimport bindKeyboardEvent from './keyboard-event'\n\n/**\n * 绑定事件\n * @param editor 编辑器实例\n */\nfunction bindEvent(editor: Editor): void {\n // 粘贴图片\n bindPasteImg(editor)\n\n // 拖拽图片\n bindDropImg(editor)\n\n // 可再扩展其他事件...如图片 tooltip 等\n // 拖拽图片尺寸\n bindDragImgSize(editor)\n\n //Tooltip\n bindTooltipImg(editor)\n\n bindKeyboardEvent(editor)\n}\n\nexport default bindEvent\n","/**\n * @description 粘贴图片\n * @author wangfupeng\n */\n\nimport Editor from '../../../editor/index'\nimport { getPasteText, getPasteHtml, getPasteImgs } from '../../../text/paste/paste-event'\nimport UploadImg from '../upload-img'\n\n/**\n * 剪切板是否有 text 或者 html \n * @param editor 编辑器对象\n * @param e 粘贴事件参数\n */\nfunction _haveTextOrHtml(editor: Editor, e: ClipboardEvent): boolean {\n const config = editor.config\n const pasteFilterStyle = config.pasteFilterStyle\n const pasteIgnoreImg = config.pasteIgnoreImg\n let pasteHtml = getPasteHtml(e, pasteFilterStyle, pasteIgnoreImg)\n if (pasteHtml) return true\n let pasteText = getPasteText(e)\n if (pasteText) return true\n\n return false // text html 都没有,则返回 false\n}\n\n/**\n * 剪切板是否有 Files\n * @param editor 编辑器对象\n * @param e 粘贴事件参数\n */\nfunction _haveFiles(editor: Editor, e: ClipboardEvent): boolean {\n const types = e.clipboardData?.types || []\n\n for (let i = 0; i < types.length; i++) {\n const type = types[i]\n if (type === 'Files') {\n return true\n }\n }\n\n return false\n}\n/**\n * 粘贴图片事件方法\n * @param e 事件参数\n */\nfunction pasteImgHandler(e: ClipboardEvent, editor: Editor): void {\n // 粘贴过来的没有 file 时,判断 text 或者 html\n if (!_haveFiles(editor, e)) {\n if (_haveTextOrHtml(editor, e)) {\n // 粘贴过来的有 text 或者 html ,则不执行粘贴图片逻辑\n return\n }\n }\n\n // 获取粘贴的图片列表\n const pastedFiles = getPasteImgs(e)\n if (!pastedFiles.length) {\n return\n }\n\n // code 中忽略(暂不管它)\n\n // 执行上传\n const uploadImg = new UploadImg(editor)\n uploadImg.uploadImg(pastedFiles)\n}\n\n/**\n * 粘贴图片\n * @param editor 编辑器对象\n * @param pasteEvents 粘贴事件列表\n */\nfunction bindPasteImg(editor: Editor): void {\n /**\n * 绑定 paste 事件\n * 这里使用了unshift以前是push\n * 在以前的流程中pasteImgHandler触发之前会调用到window.getSelection().removeAllRanges()\n * 会导致性能变差。在编辑器中粘贴粘贴耗时多了100+ms根本原因未知\n * 最小复现demo在div内粘贴图片就可以看到getData耗时异常得长\n * <html>\n * <div id=\"a\" contenteditable=\"true\"></div>\n * <script>\n * const div = document.getElementById('a')\n * div.addEventListener('paste', (e) => {\n * window.getSelection().removeAllRanges()\n * e.clipboardData.getData('text/html')\n * })\n * </script>\n * </html>\n * 因此改成unshift先触发pasteImgHandler就不会有性能问题\n */\n editor.txt.eventHooks.pasteEvents.unshift((e: ClipboardEvent) => {\n pasteImgHandler(e, editor)\n })\n}\n\nexport default bindPasteImg\n","/**\n * @description 拖拽上传图片\n * @author wangfupeng\n */\n\nimport Editor from '../../../editor/index'\nimport UploadImg from '../upload-img'\n\nexport default function bindDropImg(editor: Editor): void {\n /**\n * 拖拽图片的事件\n * @param e 事件参数\n */\n function dropImgHandler(e: any): void {\n const files = e.dataTransfer && e.dataTransfer.files\n if (!files || !files.length) {\n return\n }\n\n // 上传图片\n const uploadImg = new UploadImg(editor)\n uploadImg.uploadImg(files)\n }\n\n // 绑定 drop 事件\n editor.txt.eventHooks.dropEvents.push(dropImgHandler)\n}\n","/**\n * @description 图片拖拽事件绑定\n * @author xiaokyo\n */\n\nimport Editor from '../../../editor'\nimport $, { DomElement } from '../../../utils/dom-core'\nimport '../../../assets/style/drag-size.less'\nimport { UA } from '../../../utils/util'\n\n/**\n * 设置拖拽框的rect\n * @param $drag drag Dom\n * @param width 要设置的宽度\n * @param height 要设置的高度\n * @param left 要设置的左边\n * @param top 要设置的顶部距离\n */\nfunction setDragStyle($drag: DomElement, width: number, height: number, left: number, top: number) {\n $drag.attr('style', `width:${width}px; height:${height}px; left:${left}px; top:${top}px;`)\n}\n\n/**\n * 生成一个图片指定大小的拖拽框\n * @param editor 编辑器实例\n * @param $textContainerElem 编辑框对象\n */\nfunction createDragBox(editor: Editor, $textContainerElem: DomElement): DomElement {\n const $drag = $(\n `<div class=\"w-e-img-drag-mask\">\n <div class=\"w-e-img-drag-show-size\"></div>\n <div class=\"w-e-img-drag-rb\"></div>\n </div>`\n )\n\n $drag.hide()\n $textContainerElem.append($drag)\n return $drag\n}\n\n/**\n * 显示拖拽框并设置宽度\n * @param $textContainerElem 编辑框实例\n * @param $drag 拖拽框对象\n */\nfunction showDargBox($textContainerElem: DomElement, $drag: DomElement, $img: DomElement) {\n const boxRect = $textContainerElem.getBoundingClientRect()\n const rect = $img.getBoundingClientRect()\n const rectW = rect.width.toFixed(2)\n const rectH = rect.height.toFixed(2)\n $drag.find('.w-e-img-drag-show-size').text(`${rectW}px * ${rectH}px`)\n setDragStyle(\n $drag,\n parseFloat(rectW),\n parseFloat(rectH),\n rect.left - boxRect.left,\n rect.top - boxRect.top\n )\n $drag.show()\n}\n\n/**\n * 生成图片拖拽框的 显示/隐藏 函数\n */\nexport function createShowHideFn(editor: Editor) {\n const $textContainerElem = editor.$textContainerElem\n let $imgTarget: DomElement\n\n // 生成拖拽框\n const $drag = createDragBox(editor, $textContainerElem)\n\n /**\n * 设置拖拽事件\n * @param $drag 拖拽框的domElement\n * @param $textContainerElem 编辑器实例\n */\n function bindDragEvents($drag: DomElement, $container: DomElement) {\n $drag.on('click', function (e: Event) {\n e.stopPropagation()\n })\n $drag.on('mousedown', '.w-e-img-drag-rb', (e: MouseEvent) => {\n // e.stopPropagation()\n e.preventDefault()\n\n if (!$imgTarget) return\n\n const firstX = e.clientX\n const firstY = e.clientY\n const boxRect = $container.getBoundingClientRect()\n const imgRect = $imgTarget.getBoundingClientRect()\n const width = imgRect.width\n const height = imgRect.height\n const left = imgRect.left - boxRect.left\n const top = imgRect.top - boxRect.top\n const ratio = width / height\n\n let setW = width\n let setH = height\n const $document = $(document)\n\n function offEvents() {\n $document.off('mousemove', mouseMoveHandler)\n $document.off('mouseup', mouseUpHandler)\n }\n\n function mouseMoveHandler(ev: MouseEvent) {\n ev.stopPropagation()\n ev.preventDefault()\n\n setW = width + (ev.clientX - firstX)\n setH = height + (ev.clientY - firstY)\n\n // 等比计算\n if (setW / setH != ratio) {\n setH = setW / ratio\n }\n\n setW = parseFloat(setW.toFixed(2))\n setH = parseFloat(setH.toFixed(2))\n\n $drag\n .find('.w-e-img-drag-show-size')\n .text(\n `${setW.toFixed(2).replace('.00', '')}px * ${setH\n .toFixed(2)\n .replace('.00', '')}px`\n )\n setDragStyle($drag, setW, setH, left, top)\n }\n $document.on('mousemove', mouseMoveHandler)\n\n function mouseUpHandler() {\n $imgTarget.attr('width', setW + '')\n $imgTarget.attr('height', setH + '')\n const newImgRect = $imgTarget.getBoundingClientRect()\n setDragStyle(\n $drag,\n setW,\n setH,\n newImgRect.left - boxRect.left,\n newImgRect.top - boxRect.top\n )\n\n // 解绑事件\n offEvents()\n }\n $document.on('mouseup', mouseUpHandler)\n\n // 解绑事件\n $document.on('mouseleave', offEvents)\n })\n }\n\n // 显示拖拽框\n function showDrag($target: DomElement) {\n if (UA.isIE()) return false\n if ($target) {\n $imgTarget = $target\n showDargBox($textContainerElem, $drag, $imgTarget)\n }\n }\n\n // 隐藏拖拽框\n function hideDrag() {\n $textContainerElem.find('.w-e-img-drag-mask').hide()\n }\n\n // 事件绑定\n bindDragEvents($drag, $textContainerElem)\n\n // 后期改成 blur 触发\n $(document).on('click', hideDrag)\n editor.beforeDestroy(function () {\n $(document).off('click', hideDrag)\n })\n\n return {\n showDrag,\n hideDrag,\n }\n}\n/**\n * 点击事件委托\n * @param editor 编辑器实例\n */\nexport default function bindDragImgSize(editor: Editor) {\n const { showDrag, hideDrag } = createShowHideFn(editor)\n\n // 显示拖拽框\n editor.txt.eventHooks.imgClickEvents.push(showDrag)\n\n // 隐藏拖拽框\n editor.txt.eventHooks.textScrollEvents.push(hideDrag)\n editor.txt.eventHooks.keyupEvents.push(hideDrag)\n editor.txt.eventHooks.toolbarClickEvents.push(hideDrag)\n editor.txt.eventHooks.menuClickEvents.push(hideDrag)\n editor.txt.eventHooks.changeEvents.push(hideDrag)\n}\n","module.exports = require(\"core-js-pure/stable/parse-float\");","var parent = require('../es/parse-float');\n\nmodule.exports = parent;\n","require('../modules/es.parse-float');\nvar path = require('../internals/path');\n\nmodule.exports = path.parseFloat;\n","var $ = require('../internals/export');\nvar parseFloatImplementation = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","var global = require('../internals/global');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseFloat = global.parseFloat;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity;\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(toString(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && trimmedString.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./drag-size.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-text-container {\\n overflow: hidden;\\n}\\n.w-e-img-drag-mask {\\n position: absolute;\\n z-index: 1;\\n border: 1px dashed #ccc;\\n box-sizing: border-box;\\n}\\n.w-e-img-drag-mask .w-e-img-drag-rb {\\n position: absolute;\\n right: -5px;\\n bottom: -5px;\\n width: 16px;\\n height: 16px;\\n border-radius: 50%;\\n background: #ccc;\\n cursor: se-resize;\\n}\\n.w-e-img-drag-mask .w-e-img-drag-show-size {\\n min-width: 110px;\\n height: 22px;\\n line-height: 22px;\\n font-size: 14px;\\n color: #999;\\n position: absolute;\\n left: 0;\\n top: 0;\\n background-color: #999;\\n color: #fff;\\n border-radius: 2px;\\n padding: 0 5px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * @description tooltip 事件\n * @author lichunlin\n */\n\nimport $, { DomElement } from '../../../utils/dom-core'\nimport Tooltip, { TooltipConfType } from '../../menu-constructors/Tooltip'\nimport Editor from '../../../editor/index'\n\n/**\n * 生成 Tooltip 的显示隐藏函数\n */\nexport function createShowHideFn(editor: Editor) {\n let tooltip: Tooltip | null\n const t = (text: string, prefix: string = ''): string => {\n return editor.i18next.t(prefix + text)\n }\n\n /**\n * 显示 tooltip\n * @param $node 链接元素\n */\n function showImgTooltip($node: DomElement) {\n const conf: TooltipConfType = [\n {\n $elem: $(\"<span class='w-e-icon-trash-o'></span>\"),\n onClick: (editor: Editor, $node: DomElement) => {\n // 选中img元素\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n editor.cmd.do('delete')\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $('<span>30%</span>'),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.attr('width', '30%')\n $node.removeAttr('height')\n\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $('<span>50%</span>'),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.attr('width', '50%')\n $node.removeAttr('height')\n\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $('<span>100%</span>'),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.attr('width', '100%')\n $node.removeAttr('height')\n\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n ]\n\n conf.push({\n $elem: $(`<span>${t('重置')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.removeAttr('width')\n $node.removeAttr('height')\n\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n })\n\n if ($node.attr('data-href')) {\n conf.push({\n $elem: $(`<span>${t('查看链接')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n let link = $node.attr('data-href')\n if (link) {\n link = decodeURIComponent(link)\n window.open(link, '_target')\n }\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n })\n }\n\n tooltip = new Tooltip(editor, $node, conf)\n tooltip.create()\n }\n\n /**\n * 隐藏 tooltip\n */\n function hideImgTooltip() {\n // 移除 tooltip\n if (tooltip) {\n tooltip.remove()\n tooltip = null\n }\n }\n\n return {\n showImgTooltip,\n hideImgTooltip,\n }\n}\n\n/**\n * 绑定 tooltip 事件\n * @param editor 编辑器实例\n */\nexport default function bindTooltipEvent(editor: Editor) {\n const { showImgTooltip, hideImgTooltip } = createShowHideFn(editor)\n\n // 点击图片元素是,显示 tooltip\n editor.txt.eventHooks.imgClickEvents.push(showImgTooltip)\n\n // 点击其他地方,或者滚动时,隐藏 tooltip\n editor.txt.eventHooks.clickEvents.push(hideImgTooltip)\n editor.txt.eventHooks.keyupEvents.push(hideImgTooltip)\n editor.txt.eventHooks.toolbarClickEvents.push(hideImgTooltip)\n editor.txt.eventHooks.menuClickEvents.push(hideImgTooltip)\n editor.txt.eventHooks.textScrollEvents.push(hideImgTooltip)\n editor.txt.eventHooks.imgDragBarMouseDownEvents.push(hideImgTooltip)\n\n // change 时隐藏\n editor.txt.eventHooks.changeEvents.push(hideImgTooltip)\n}\n","import Editor from '../../../editor'\n\nexport default function bindEventKeyboardEvent(editor: Editor) {\n const { txt, selection } = editor\n const { keydownEvents } = txt.eventHooks\n\n keydownEvents.push(function (e) {\n // 删除图片时有时会因为浏览器bug删不掉。因此这里手动判断光标前面是不是图片是就删掉\n const $selectionContainerElem = selection.getSelectionContainerElem()\n const range = selection.getRange()\n\n if (\n !range ||\n !$selectionContainerElem ||\n e.keyCode !== 8 ||\n !selection.isSelectionEmpty()\n ) {\n return\n }\n let { startContainer, startOffset } = range\n\n // 同一段落内上一个节点\n let prevNode: Node | null = null\n if (startOffset === 0) {\n // 此时上一个节点需要通过previousSibling去找\n while (\n startContainer !== $selectionContainerElem.elems[0] &&\n $selectionContainerElem.elems[0].contains(startContainer) &&\n startContainer.parentNode &&\n !prevNode\n ) {\n if (startContainer.previousSibling) {\n prevNode = startContainer.previousSibling as Node\n break\n }\n startContainer = startContainer.parentNode\n }\n } else if (startContainer.nodeType !== 3) {\n // 非文本节点才需要被处理比如p\n prevNode = startContainer.childNodes[startOffset - 1]\n }\n\n if (!prevNode) {\n return\n }\n\n let lastChildNodeInPrevNode = prevNode\n\n // 找到最右侧叶子节点\n while (lastChildNodeInPrevNode.childNodes.length) {\n lastChildNodeInPrevNode =\n lastChildNodeInPrevNode.childNodes[lastChildNodeInPrevNode.childNodes.length - 1]\n }\n\n if (\n lastChildNodeInPrevNode instanceof HTMLElement &&\n lastChildNodeInPrevNode.tagName === 'IMG'\n ) {\n lastChildNodeInPrevNode.remove()\n e.preventDefault()\n }\n })\n}\n","/**\n * @description image 菜单 panel tab 配置\n * @author wangfupeng\n */\n\nimport Editor from '../../editor/index'\nimport $, { DomElement } from '../../utils/dom-core'\nimport { getRandom } from '../../utils/util'\nimport { PanelConf, PanelTabConf, TabEventConf } from '../menu-constructors/Panel'\nimport UploadImg from './upload-img'\n\nexport type ImgPanelConf = {\n onlyUploadConf?: {\n $elem: DomElement\n events: TabEventConf[]\n }\n} & PanelConf\n\nexport default function (editor: Editor): ImgPanelConf {\n const config = editor.config\n const uploadImg = new UploadImg(editor)\n\n // panel 中需要用到的id\n const upTriggerId = getRandom('up-trigger-id')\n const upFileId = getRandom('up-file-id')\n const linkUrlId = getRandom('input-link-url')\n const linkUrlAltId = getRandom('input-link-url-alt')\n const linkUrlHrefId = getRandom('input-link-url-href')\n const linkBtnId = getRandom('btn-link')\n\n const i18nPrefix = 'menus.panelMenus.image.'\n const t = (text: string, prefix: string = i18nPrefix): string => {\n return editor.i18next.t(prefix + text)\n }\n\n /**\n * 校验网络图片链接是否合法\n * @param linkImg 网络图片链接\n */\n function checkLinkImg(src: string, linkUrlAltText?: string, linkUrlHrefText?: string): boolean {\n //查看开发者自定义配置的返回值\n const check = config.linkImgCheck(src)\n if (check === true) {\n return true\n } else if (typeof check === 'string') {\n //用户未能通过开发者的校验,开发者希望我们提示这一字符串\n config.customAlert(check, 'error')\n }\n return false\n }\n\n // tabs 配置 -----------------------------------------\n const fileMultipleAttr = config.uploadImgMaxLength === 1 ? '' : 'multiple=\"multiple\"'\n const accepts: string = config.uploadImgAccept.map((item: string) => `image/${item}`).join(',')\n\n /**\n * 设置模板的类名和icon图标\n * w-e-menu是作为button菜单的模板\n * w-e-up-img-container是做为panel菜单的窗口内容的模板\n * @param containerClass 模板最外层的类名\n * @param iconClass 模板中icon的类名\n * @param titleName 模板中标题的名称 需要则设置不需要则设为空字符\n */\n const getUploadImgTpl = (containerClass: string, iconClass: string, titleName: string) =>\n `<div class=\"${containerClass}\" data-title=\"${titleName}\">\n <div id=\"${upTriggerId}\" class=\"w-e-up-btn\">\n <i class=\"${iconClass}\"></i>\n </div>\n <div style=\"display:none;\">\n <input id=\"${upFileId}\" type=\"file\" ${fileMultipleAttr} accept=\"${accepts}\"/>\n </div>\n </div>`\n const uploadEvents: TabEventConf[] = [\n // 触发选择图片\n {\n selector: '#' + upTriggerId,\n type: 'click',\n fn: () => {\n const uploadImgFromMedia = config.uploadImgFromMedia\n if (uploadImgFromMedia && typeof uploadImgFromMedia === 'function') {\n uploadImgFromMedia()\n return true\n }\n const $file = $('#' + upFileId)\n const fileElem = $file.elems[0]\n if (fileElem) {\n fileElem.click()\n } else {\n // 返回 true 可关闭 panel\n return true\n }\n },\n },\n // 选择图片完毕\n {\n selector: '#' + upFileId,\n type: 'change',\n fn: () => {\n const $file = $('#' + upFileId)\n const fileElem = $file.elems[0] as HTMLInputElement\n if (!fileElem) {\n // 返回 true 可关闭 panel\n return true\n }\n\n // 获取选中的 file 对象列表\n const fileList = fileElem.files\n if (fileList?.length) {\n uploadImg.uploadImg(fileList)\n }\n\n // 判断用于打开文件的input有没有值如果有就清空以防上传同一张图片时不会触发change事件\n // input的功能只是单单为了打开文件而已获取到需要的文件参数当文件数据获取到后可以清空。\n if (fileElem) {\n fileElem.value = ''\n }\n\n // 返回 true 可关闭 panel\n return true\n },\n },\n ]\n\n const linkImgInputs = [\n `<input\n id=\"${linkUrlId}\"\n type=\"text\"\n class=\"block\"\n placeholder=\"${t('图片地址')}\"/>`,\n ]\n\n if (config.showLinkImgAlt) {\n linkImgInputs.push(`\n <input\n id=\"${linkUrlAltId}\"\n type=\"text\"\n class=\"block\"\n placeholder=\"${t('图片文字说明')}\"/>`)\n }\n\n if (config.showLinkImgHref) {\n linkImgInputs.push(`\n <input\n id=\"${linkUrlHrefId}\"\n type=\"text\"\n class=\"block\"\n placeholder=\"${t('跳转链接')}\"/>`)\n }\n\n const tabsConf: PanelTabConf[] = [\n // first tab\n {\n // 标题\n title: t('上传图片'),\n // 模板\n tpl: getUploadImgTpl('w-e-up-img-container', 'w-e-icon-upload2', ''),\n // 事件绑定\n events: uploadEvents,\n }, // first tab end\n // second tab\n {\n title: t('网络图片'),\n tpl: `<div>\n ${linkImgInputs.join('')}\n <div class=\"w-e-button-container\">\n <button type=\"button\" id=\"${linkBtnId}\" class=\"right\">${t(\n '插入',\n ''\n )}</button>\n </div>\n </div>`,\n events: [\n {\n selector: '#' + linkBtnId,\n type: 'click',\n fn: () => {\n const $linkUrl = $('#' + linkUrlId)\n const url = $linkUrl.val().trim()\n\n //如果url为空则直接返回\n if (!url) return\n\n let linkUrlAltText\n if (config.showLinkImgAlt) {\n linkUrlAltText = $('#' + linkUrlAltId)\n .val()\n .trim()\n }\n let linkUrlHrefText\n if (config.showLinkImgHref) {\n linkUrlHrefText = $('#' + linkUrlHrefId)\n .val()\n .trim()\n }\n //如果不能通过校验也直接返回\n if (!checkLinkImg(url, linkUrlAltText, linkUrlHrefText)) return\n //插入图片url\n uploadImg.insertImg(url, linkUrlAltText, linkUrlHrefText)\n // 返回 true 表示函数执行结束之后关闭 panel\n return true\n },\n bindEnter: true,\n },\n ],\n }, // second tab end\n ]\n // tabs end\n\n // 最终的配置 -----------------------------------------\n const conf: ImgPanelConf = {\n width: 300,\n height: 0,\n tabs: [],\n onlyUploadConf: {\n $elem: $(getUploadImgTpl('w-e-menu', 'w-e-icon-image', '图片')),\n events: uploadEvents,\n },\n }\n // 显示“上传图片”\n if (\n window.FileReader &&\n (config.uploadImgShowBase64 ||\n config.uploadImgServer ||\n config.customUploadImg ||\n config.uploadImgFromMedia)\n ) {\n conf.tabs.push(tabsConf[0])\n }\n // 显示“插入网络图片”\n if (config.showLinkImg) {\n conf.tabs.push(tabsConf[1])\n conf.onlyUploadConf = undefined\n }\n\n return conf\n}\n","/**\n * @description 增加缩进/减少缩进\n * @author tonghan\n */\n\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport operateElement from './operate-element'\n\nclass Indent extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"缩进\">\n <i class=\"w-e-icon-indent-increase\"></i>\n </div>`\n )\n const dropListConf = {\n width: 130,\n title: '设置缩进',\n type: 'list',\n list: [\n {\n $elem: $(\n `<p>\n <i class=\"w-e-icon-indent-increase w-e-drop-list-item\"></i>\n ${editor.i18next.t('menus.dropListMenu.indent.增加缩进')}\n <p>`\n ),\n value: 'increase',\n },\n\n {\n $elem: $(\n `<p>\n <i class=\"w-e-icon-indent-decrease w-e-drop-list-item\"></i>\n ${editor.i18next.t('menus.dropListMenu.indent.减少缩进')}\n <p>`\n ),\n value: 'decrease',\n },\n ],\n clickHandler: (value: string) => {\n // 注意 this 是指向当前的 Indent 对象\n this.command(value)\n },\n }\n\n super($elem, editor, dropListConf)\n }\n\n /**\n * 执行命令\n * @param value value\n */\n public command(value: string): void {\n const editor = this.editor\n const $selectionElem = editor.selection.getSelectionContainerElem()\n\n // 判断 当前选区为 textElem 时\n if ($selectionElem && editor.$textElem.equal($selectionElem)) {\n // 当 当前选区 等于 textElem 时\n // 代表 当前选区 可能是一个选择了一个完整的段落或者多个段落\n const $elems = editor.selection.getSelectionRangeTopNodes()\n if ($elems.length > 0) {\n $elems.forEach((item: any) => {\n operateElement($(item), value, editor)\n })\n }\n } else {\n // 当 当前选区 不等于 textElem 时\n // 代表 当前选区要么是一个段落,要么是段落中的一部分\n if ($selectionElem && $selectionElem.length > 0) {\n $selectionElem.forEach((item: any) => {\n operateElement($(item), value, editor)\n })\n }\n }\n\n // 恢复选区\n editor.selection.restoreSelection()\n this.tryChangeActive()\n }\n\n /**\n * 尝试改变菜单激活(高亮)状态\n */\n public tryChangeActive(): void {\n const editor = this.editor\n const $selectionElem = editor.selection.getSelectionStartElem()\n const $selectionStartElem = $($selectionElem).getNodeTop(editor)\n\n if ($selectionStartElem.length <= 0) return\n\n if ($selectionStartElem.elems[0].style['paddingLeft'] != '') {\n this.active()\n } else {\n this.unActive()\n }\n }\n}\n\nexport default Indent\n","/**\n * @description 对节点 操作 进行封装\n * 获取当前节点的段落\n * 根据type判断是增加还是减少缩进\n * @author tonghan\n */\n\nimport { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { IndentationOptions } from '../../config/menus'\nimport increaseIndentStyle from './increase-indent-style'\nimport decreaseIndentStyle from './decrease-indent-style'\n\nconst lengthRegex = /^(\\d+)(\\w+)$/\nconst percentRegex = /^(\\d+)%$/\n\nfunction parseIndentation(editor: Editor): IndentationOptions {\n const { indentation } = editor.config\n\n if (typeof indentation === 'string') {\n if (lengthRegex.test(indentation)) {\n const [value, unit] = indentation.trim().match(lengthRegex)!.slice(1, 3)\n return {\n value: Number(value),\n unit,\n }\n } else if (percentRegex.test(indentation)) {\n return {\n value: Number(indentation.trim().match(percentRegex)![1]),\n unit: '%',\n }\n }\n } else if (indentation.value !== void 0 && indentation.unit) {\n return indentation\n }\n\n return {\n value: 2,\n unit: 'em',\n }\n}\n\nfunction operateElement($node: DomElement, type: String, editor: Editor): void {\n const $elem = $node.getNodeTop(editor)\n const reg = /^(P|H[0-9]*)$/\n\n if (reg.test($elem.getNodeName())) {\n if (type === 'increase') increaseIndentStyle($elem, parseIndentation(editor))\n else if (type === 'decrease') decreaseIndentStyle($elem, parseIndentation(editor))\n }\n}\n\nexport default operateElement\n","/**\n * @description 增加缩进\n * @author tonghan\n */\n\nimport { DomElement } from '../../utils/dom-core'\nimport { IndentationOptions } from '../../config/menus'\n\nfunction increaseIndentStyle($node: DomElement, options: IndentationOptions): void {\n const $elem = $node.elems[0]\n if ($elem.style['paddingLeft'] === '') {\n $node.css('padding-left', options.value + options.unit)\n } else {\n const oldPL = $elem.style['paddingLeft']\n const oldVal = oldPL.slice(0, oldPL.length - options.unit.length)\n const newVal = Number(oldVal) + options.value\n $node.css('padding-left', `${newVal}${options.unit}`)\n }\n}\n\nexport default increaseIndentStyle\n","/**\n * @description 减少缩进\n * @author tonghan\n */\n\nimport { DomElement } from '../../utils/dom-core'\nimport { IndentationOptions } from '../../config/menus'\n\nfunction decreaseIndentStyle($node: DomElement, options: IndentationOptions): void {\n const $elem = $node.elems[0]\n if ($elem.style['paddingLeft'] !== '') {\n const oldPL = $elem.style['paddingLeft']\n const oldVal = oldPL.slice(0, oldPL.length - options.unit.length)\n const newVal = Number(oldVal) - options.value\n if (newVal > 0) {\n $node.css('padding-left', `${newVal}${options.unit}`)\n } else {\n $node.css('padding-left', '')\n }\n }\n}\n\nexport default decreaseIndentStyle\n","/**\n * @description 插入表情\n * @author liuwe\n */\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport PanelMenu from '../menu-constructors/PanelMenu'\nimport Panel from '../menu-constructors/Panel'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport createPanelConf from './create-panel-conf'\n\nclass Emoticon extends PanelMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"表情\">\n <i class=\"w-e-icon-happy\"></i>\n </div>`\n )\n super($elem, editor)\n }\n /**\n * 创建 panel\n */\n private createPanel(): void {\n const conf = createPanelConf(this.editor)\n const panel = new Panel(this, conf)\n panel.create()\n }\n\n /**\n * 菜单表情点击事件\n */\n public clickHandler(): void {\n this.createPanel()\n }\n\n public tryChangeActive() {}\n}\n\nexport default Emoticon\n","/**\n * @description 表情菜单 panel配置\n * @author liuwei\n */\n\nimport Editor from '../../editor/index'\nimport { PanelConf, PanelTabConf } from '../menu-constructors/Panel'\nimport $ from '../../utils/dom-core'\nimport { EmotionsType, EmotionsContentType } from '../../config/menus'\n\nexport default function (editor: Editor): PanelConf {\n // 声明emotions数据结构\n const emotions: Array<EmotionsType> = editor.config.emotions\n\n /* tabs配置项 ==================================================================*/\n\n // 生成表情结构 TODO jele type类型待优化\n function GenerateExpressionStructure(ele: EmotionsType) {\n // 返回为一个数组对象\n let res: string[] = []\n\n // 如果type是image类型则生成一个img标签\n if (ele.type == 'image') {\n res = ele.content.map((con: EmotionsContentType | string) => {\n if (typeof con == 'string') return ''\n return `<span title=\"${con.alt}\">\n <img class=\"eleImg\" data-emoji=\"${con.alt}\" style src=\"${con.src}\" alt=\"[${con.alt}]\">\n </span>`\n })\n res = res.filter((s: string) => s !== '')\n }\n //否则直接当内容处理\n else {\n res = ele.content.map((con: EmotionsContentType | string) => {\n return `<span class=\"eleImg\" title=\"${con}\">${con}</span>`\n })\n }\n\n return res.join('').replace(/&nbsp;/g, '')\n }\n\n const tabsConf: PanelTabConf[] = emotions.map((ele: EmotionsType) => {\n return {\n title: editor.i18next.t(`menus.panelMenus.emoticon.${ele.title}`),\n\n // 判断type类型如果是image则以img的形式插入否则以内容\n tpl: `<div>${GenerateExpressionStructure(ele)}</div>`,\n\n events: [\n {\n selector: '.eleImg',\n type: 'click',\n fn: (e: Event) => {\n // e为事件对象\n const $target = $(e.target)\n const nodeName = $target.getNodeName()\n let insertHtml\n\n if (nodeName === 'IMG') {\n // 插入图片\n insertHtml = $target.parent().html().trim()\n } else {\n // 插入 emoji\n insertHtml = '<span>' + $target.html() + '</span>'\n }\n\n editor.cmd.do('insertHTML', insertHtml)\n // 示函数执行结束之后关闭 panel\n return true\n },\n },\n ],\n }\n })\n /* tabs配置项 =================================================================end*/\n\n // 最终的配置 -----------------------------------------\n const conf: PanelConf = {\n width: 300, // Panel容器宽度\n height: 230, // Panel容器高度\n tabs: tabsConf,\n }\n return conf\n}\n","import $, { DomElement } from '../../../utils/dom-core'\nimport WrapListHandle from './WrapListHandle'\nimport JoinListHandle from './JoinListHandle'\nimport StartJoinListHandle from './StartJoinListHandle'\nimport EndJoinListHandle from './EndJoinListHandle'\nimport OtherListHandle from './OtherListHandle'\n\nimport { HandlerListOptions } from './ListHandle'\n\n// 片段类型\nexport type ContainerFragment = HTMLElement | DocumentFragment\n\n// 处理类\nexport type ListHandleClass =\n | WrapListHandle\n | JoinListHandle\n | StartJoinListHandle\n | EndJoinListHandle\n | OtherListHandle\n\nexport enum ClassType {\n Wrap = 'WrapListHandle',\n Join = 'JoinListHandle',\n StartJoin = 'StartJoinListHandle',\n EndJoin = 'EndJoinListHandle',\n Other = 'OtherListHandle',\n}\n\nconst handle = {\n WrapListHandle,\n JoinListHandle,\n StartJoinListHandle,\n EndJoinListHandle,\n OtherListHandle,\n}\n\nexport function createListHandle(\n classType: ClassType,\n options: HandlerListOptions,\n range?: Range\n): ListHandleClass {\n if (classType === ClassType.Other && range === undefined) {\n throw new Error('other 类需要传入 range')\n }\n\n return classType !== ClassType.Other\n ? new handle[classType](options)\n : new handle[classType](options, range as Range)\n}\n\n/**\n * 统一执行的接口\n */\nexport default class ListHandleCommand {\n private handle: ListHandleClass\n\n constructor(handle: ListHandleClass) {\n this.handle = handle\n this.handle.exec()\n }\n\n getSelectionRangeElem(): DomElement {\n return $(this.handle.selectionRangeElem.get())\n }\n}\n","import { ContainerFragment } from '.'\nimport $, { DomElement } from '../../../utils/dom-core'\nimport { Exec, HandlerListOptions, ListHandle } from './ListHandle'\nimport {\n insertBefore,\n createElement,\n createDocumentFragment,\n createElementFragment,\n} from '../utils'\n\n/**\n * 选区在序列内的处理\n */\nexport default class WrapListHandle extends ListHandle implements Exec {\n constructor(options: HandlerListOptions) {\n super(options)\n }\n\n exec(): void {\n const { listType, listTarget, $selectionElem, $startElem, $endElem } = this.options\n\n let $containerFragment: ContainerFragment // 容器 - HTML 文档片段\n const $nodes: DomElement[] = [] // 获取选中的段落\n\n // 获取 selectionElem 的标签名\n const containerNodeName = $selectionElem?.getNodeName()\n\n // 获取开始以及结束的 li 元素\n const $start = $startElem.prior\n const $end = $endElem.prior\n\n // =====================================\n // 当 开始节点 和 结束节点 没有 prior\n // 并且 开始节点 没有前一个兄弟节点\n // 并且 结束节点 没有后一个兄弟节点\n // 即代表 全选序列\n // =====================================\n if (\n (!$startElem.prior && !$endElem.prior) ||\n (!$start?.prev().length && !$end?.next().length)\n ) {\n // 获取当前序列下的所有 li 标签\n ;($selectionElem?.children() as DomElement).forEach(($node: HTMLElement) => {\n $nodes.push($($node))\n })\n\n // =====================================\n // 当 selectionElem 的标签名和按钮类型 一致 的时候\n // 代表着当前的操作是 取消 序列\n // =====================================\n if (containerNodeName === listType) {\n // 生成对应的段落(p)并添加到文档片段中,然后删除掉无用的 li\n $containerFragment = createElementFragment(\n $nodes,\n createDocumentFragment(), // 创建 文档片段\n 'p'\n )\n }\n\n // =====================================\n // 当 selectionElem 的标签名和按钮类型 不一致 的时候\n // 代表着当前的操作是 转换 序列\n // =====================================\n else {\n // 创建 序列节点\n $containerFragment = createElement(listTarget)\n\n // 因为是转换,所以 li 元素可以直接使用\n $nodes.forEach($node => {\n $containerFragment.appendChild($node.elems[0])\n })\n }\n\n // 把 文档片段 或 序列节点 插入到 selectionElem 的前面\n this.selectionRangeElem.set($containerFragment)\n\n // 插入到 $selectionElem 之前\n insertBefore($selectionElem, $containerFragment, $selectionElem.elems[0])\n\n // 删除无用的 selectionElem 因为它被掏空了\n $selectionElem.remove()\n }\n\n // =====================================\n // 当不是全选序列的时候就代表是非全选序列(废话)\n // 非全选序列的情况\n // =====================================\n else {\n // 获取选中的内容\n let $startDom: DomElement = $start as DomElement\n while ($startDom.length) {\n $nodes.push($startDom)\n $end?.equal($startDom)\n ? ($startDom = $(undefined)) // 结束\n : ($startDom = $startDom.next()) // 继续\n }\n\n // 获取开始节点的上一个兄弟节点\n const $prveDom: DomElement = ($start as DomElement).prev()\n // 获取结束节点的下一个兄弟节点\n let $nextDom: DomElement = ($end as DomElement).next()\n\n // =====================================\n // 当 selectionElem 的标签名和按钮类型一致的时候\n // 代表着当前的操作是 取消 序列\n // =====================================\n if (containerNodeName === listType) {\n // 生成对应的段落(p)并添加到文档片段中,然后删除掉无用的 li\n $containerFragment = createElementFragment(\n $nodes,\n createDocumentFragment(), // 创建 文档片段\n 'p'\n )\n }\n\n // =====================================\n // 当 selectionElem 的标签名和按钮类型不一致的时候\n // 代表着当前的操作是 转换 序列\n // =====================================\n else {\n // 创建 文档片段\n $containerFragment = createElement(listTarget)\n\n // 因为是转换,所以 li 元素可以直接使用\n $nodes.forEach(($node: DomElement) => {\n $containerFragment.append($node.elems[0])\n })\n }\n\n // =====================================\n // 当 prveDom 和 nextDom 都存在的时候\n // 代表着当前选区是在序列的中间\n // 所以要先把 下半部分 未选择的 li 元素独立出来生成一个 序列\n // =====================================\n if ($prveDom.length && $nextDom.length) {\n // 获取尾部的元素\n const $tailDomArr: DomElement[] = []\n while ($nextDom.length) {\n $tailDomArr.push($nextDom)\n $nextDom = $nextDom.next()\n }\n\n // 创建 尾部序列节点\n const $tailDocFragment = createElement(containerNodeName)\n\n // 把尾部元素节点添加到尾部序列节点中\n $tailDomArr.forEach(($node: DomElement) => {\n $tailDocFragment.append($node.elems[0])\n })\n\n // 把尾部序列节点插入到 selectionElem 的后面\n $($tailDocFragment).insertAfter($selectionElem)\n\n // =====================================\n // 获取选区容器元素的父元素,一般就是编辑区域\n // 然后判断 selectionElem 是否还有下一个兄弟节点\n // 如果有,就把文档片段添加到 selectionElem 下一个兄弟节点前\n // 如果没有,就把文档片段添加到 编辑区域 末尾\n // =====================================\n this.selectionRangeElem.set($containerFragment)\n const $selectionNextDom: DomElement = $selectionElem.next()\n $selectionNextDom.length\n ? insertBefore($selectionElem, $containerFragment, $selectionNextDom.elems[0])\n : $selectionElem.parent().elems[0].append($containerFragment)\n }\n\n // =====================================\n // 不管是 取消 还是 转换 都需要重新插入节点\n //\n // prveDom.length 等于 0 即代表选区是 selectionElem 序列的上半部分\n // 上半部分的 li 元素\n // =====================================\n else if (!$prveDom.length) {\n // 文档片段插入到 selectionElem 之前\n this.selectionRangeElem.set($containerFragment)\n insertBefore($selectionElem, $containerFragment, $selectionElem.elems[0])\n }\n\n // =====================================\n // 不管是 取消 还是 转换 都需要重新插入节点\n //\n // nextDom.length 等于 0 即代表选区是 selectionElem 序列的下半部分\n // 下半部分的 li 元素 if (!$nextDom.length)\n // =====================================\n else {\n // 文档片段插入到 selectionElem 之后\n this.selectionRangeElem.set($containerFragment)\n const $selectionNextDom: DomElement = $selectionElem.next()\n $selectionNextDom.length\n ? insertBefore($selectionElem, $containerFragment, $selectionNextDom.elems[0])\n : $selectionElem.parent().elems[0].append($containerFragment)\n }\n }\n }\n}\n","type SelectionRangeType = HTMLElement | ChildNode[]\ntype SetSelectionRangeType = SelectionRangeType | DocumentFragment\nexport type SelectionRangeElemType = SelectionRangeType | null\n\n/**\n * @description 选区的 Element\n * @author tonghan\n */\nclass SelectionRangeElem {\n private _element: SelectionRangeElemType\n\n constructor() {\n this._element = null\n }\n\n /**\n * 设置 SelectionRangeElem 的值\n * @param { SetSelectionRangeType } data\n */\n public set(data: SetSelectionRangeType) {\n //\n if (data instanceof DocumentFragment) {\n const childNode: ChildNode[] = []\n data.childNodes.forEach(($node: ChildNode) => {\n childNode.push($node)\n })\n data = childNode\n }\n this._element = data\n }\n\n /**\n * 获取 SelectionRangeElem 的值\n * @returns { SelectionRangeType } Elem\n */\n public get(): SelectionRangeElemType {\n return this._element\n }\n\n /**\n * 清除 SelectionRangeElem 的值\n */\n public clear() {\n this._element = null\n }\n}\n\nexport default SelectionRangeElem\n","import { ContainerFragment } from '.'\nimport $, { DomElement } from '../../../utils/dom-core'\nimport { Exec, HandlerListOptions, ListHandle } from './ListHandle'\nimport {\n filterSelectionNodes,\n getStartPoint,\n getEndPoint,\n insertBefore,\n createElement,\n createDocumentFragment,\n createElementFragment,\n} from '../utils'\n\nexport default class JoinListHandle extends ListHandle implements Exec {\n constructor(options: HandlerListOptions) {\n super(options)\n }\n\n exec(): void {\n const { editor, listType, listTarget, $startElem, $endElem } = this.options\n\n // 容器 - HTML 文档片段\n let $containerFragment: ContainerFragment\n\n // 获取选中的段落\n const $nodes: DomElement[] = editor.selection.getSelectionRangeTopNodes()\n\n // 获取开始段落和结束段落 标签名\n const startNodeName = $startElem?.getNodeName()\n const endNodeName = $endElem?.getNodeName()\n\n // =====================================\n // 开头结尾都是序列的情况下\n // 开头序列 和 结尾序列的标签名一致的时候\n // =====================================\n if (startNodeName === endNodeName) {\n // =====================================\n // 开头序列 和 结尾序列 中间还有其他的段落的时候\n // =====================================\n if ($nodes.length > 2) {\n // 弹出 开头 和 结尾\n $nodes.shift()\n $nodes.pop()\n\n // 把中间部分的节点元素转换成 li 元素并添加到文档片段后删除\n $containerFragment = createElementFragment(\n filterSelectionNodes($nodes), // 过滤 $nodes 获取到符合要求的选中元素节点\n createDocumentFragment() // 创建 文档片段\n )\n\n // =====================================\n // 由于开头序列 和 结尾序列的标签名一样,所以只判断了开头序列的\n // 当开头序列的标签名和按钮类型 一致 的时候\n // 代表着当前是一个 设置序列 的操作\n // =====================================\n if (startNodeName === listType) {\n // 把结束序列的 li 元素添加到 文档片段中\n $endElem.children()?.forEach(($list: HTMLElement) => {\n $containerFragment.append($list)\n })\n\n // 下序列全选被掏空了,就卸磨杀驴吧\n $endElem.remove()\n\n // 在开始序列中添加 文档片段\n this.selectionRangeElem.set($containerFragment)\n $startElem.elems[0].append($containerFragment)\n }\n\n // =====================================\n // 由于开头序列 和 结尾序列的标签名一样,所以只判断了开头序列的\n // 当开头序列的标签名和按钮类型 不一致 的时候\n // 代表着当前是一个 转换序列 的操作\n // =====================================\n else {\n // 创建 开始序列和结束序列的文档片段\n const $startFragment = document.createDocumentFragment()\n const $endFragment = document.createDocumentFragment()\n\n // 获取起点元素\n let $startDom: DomElement = getStartPoint($startElem)\n // 获取上半序列中的选中内容,并添加到文档片段中\n while ($startDom.length) {\n const _element = $startDom.elems[0]\n $startDom = $startDom.next()\n $startFragment.append(_element)\n }\n\n // 获取结束元素\n let $endDom: DomElement = getEndPoint($endElem)\n // 获取下半序列中选中的内容\n const domArr: Element[] = []\n while ($endDom.length) {\n domArr.unshift($endDom.elems[0])\n $endDom = $endDom.prev()\n }\n // 添加到文档片段中\n domArr.forEach(($node: Element) => {\n $endFragment.append($node)\n })\n\n // 合并文档片段\n const $orderFragment = createElement(listTarget)\n $orderFragment.append($startFragment)\n $orderFragment.append($containerFragment)\n $orderFragment.append($endFragment)\n $containerFragment = $orderFragment\n\n // 插入\n this.selectionRangeElem.set($containerFragment)\n $($orderFragment).insertAfter($startElem)\n\n // 序列全选被掏空了后,就卸磨杀驴吧\n !$startElem.children()?.length && $startElem.remove()\n !$endElem.children()?.length && $endElem.remove()\n }\n }\n\n // =====================================\n // 开头序列 和 结尾序列 中间没有其他的段落\n // =====================================\n else {\n $nodes.length = 0\n\n // 获取起点元素\n let $startDom: DomElement = getStartPoint($startElem)\n // 获取上半序列中的选中内容\n while ($startDom.length) {\n $nodes.push($startDom)\n $startDom = $startDom.next()\n }\n\n // 获取结束元素\n let $endDom: DomElement = getEndPoint($endElem)\n // 获取下半序列中选中的内容\n const domArr: DomElement[] = []\n // 获取下半序列中的选中内容\n while ($endDom.length) {\n domArr.unshift($endDom)\n $endDom = $endDom.prev()\n }\n\n // 融合内容\n $nodes.push(...domArr)\n\n // =====================================\n // 由于开头序列 和 结尾序列的标签名一样,所以只判断了开头序列的\n // 当开头序列的标签名和按钮类型 一致 的时候\n // 代表着当前是一个 取消序列 的操作\n // =====================================\n if (startNodeName === listType) {\n // 创建 文档片段\n // 把 li 转换为 p 标签\n $containerFragment = createElementFragment(\n $nodes,\n createDocumentFragment(),\n 'p'\n )\n\n // 插入到 endElem 前\n this.selectionRangeElem.set($containerFragment)\n insertBefore($startElem, $containerFragment, $endElem.elems[0])\n }\n\n // =====================================\n // 由于开头序列 和 结尾序列的标签名一样,所以只判断了开头序列的\n // 当开头序列的标签名和按钮类型 不一致 的时候\n // 代表着当前是一个 设置序列 的操作\n // =====================================\n else {\n // 创建 序列元素\n $containerFragment = createElement(listTarget)\n // li 元素添加到 序列元素 中\n $nodes.forEach(($list: DomElement) => {\n $containerFragment.append($list.elems[0])\n })\n // 插入到 startElem 之后\n this.selectionRangeElem.set($containerFragment)\n $($containerFragment).insertAfter($startElem)\n }\n\n // 序列全选被掏空了后,就卸磨杀驴吧\n !$startElem.children()?.length && $endElem.remove()\n !$endElem.children()?.length && $endElem.remove()\n }\n }\n\n // =====================================\n // 由于开头序列 和 结尾序列的标签名不一样\n // =====================================\n else {\n // 下序列元素数组\n const lowerListElems: DomElement[] = []\n // 获取结束元素\n let $endDom: DomElement = getEndPoint($endElem)\n // 获取下半序列中选中的内容\n while ($endDom.length) {\n lowerListElems.unshift($endDom)\n $endDom = $endDom.prev()\n }\n\n // 上序列元素数组\n const upperListElems: DomElement[] = []\n // 获取起点元素\n let $startDom: DomElement = getStartPoint($startElem)\n // 获取上半序列中的选中内容,并添加到文档片段中\n while ($startDom.length) {\n upperListElems.push($startDom)\n $startDom = $startDom.next()\n }\n\n // 创建 文档片段\n $containerFragment = createDocumentFragment()\n\n // 弹出开头和结尾的序列\n $nodes.shift()\n $nodes.pop()\n\n // 把头部序列的内容添加到文档片段当中\n upperListElems.forEach($list => $containerFragment.append($list.elems[0]))\n\n // 生成 li 标签,并且添加到 文档片段中,删除无用节点\n $containerFragment = createElementFragment(\n filterSelectionNodes($nodes), // 序列中间的数据 - 进行数据过滤\n $containerFragment\n )\n\n // 把尾部序列的内容添加到文档片段当中\n lowerListElems.forEach($list => $containerFragment.append($list.elems[0]))\n\n // 记录\n this.selectionRangeElem.set($containerFragment)\n\n // =====================================\n // 开头序列 和 设置序列类型相同\n // =====================================\n if (startNodeName === listType) {\n // 插入到 开始序列的尾部(作为子元素)\n $startElem.elems[0].append($containerFragment)\n\n // 序列全选被掏空了后,就卸磨杀驴吧\n !$endElem.children()?.length && $endElem.remove()\n }\n\n // =====================================\n // 结尾序列 和 设置序列类型相同\n // =====================================\n else {\n // 插入到结束序列的顶部(作为子元素)\n if ($endElem.children()?.length) {\n const $endElemChild = $endElem.children() as DomElement\n insertBefore($endElemChild, $containerFragment, $endElemChild.elems[0])\n } else {\n $endElem.elems[0].append($containerFragment)\n }\n }\n }\n }\n}\n","import { ContainerFragment } from '.'\nimport $, { DomElement } from '../../../utils/dom-core'\nimport { Exec, HandlerListOptions, ListHandle } from './ListHandle'\nimport {\n filterSelectionNodes,\n getStartPoint,\n createElement,\n createDocumentFragment,\n createElementFragment,\n} from '../utils'\n\nexport default class StartJoinListHandle extends ListHandle implements Exec {\n constructor(options: HandlerListOptions) {\n super(options)\n }\n\n exec(): void {\n const { editor, listType, listTarget, $startElem } = this.options\n\n // 容器 - HTML 文档片段\n let $containerFragment: ContainerFragment\n\n // 获取选中的段落\n const $nodes: DomElement[] = editor.selection.getSelectionRangeTopNodes()\n\n // 获取开始段落标签名\n const startNodeName = $startElem?.getNodeName()\n\n // 弹出 开头序列\n $nodes.shift()\n\n // 上序列元素数组\n const upperListElems: DomElement[] = []\n // 获取起点元素\n let $startDom: DomElement = getStartPoint($startElem)\n // 获取上半序列中的选中内容,并添加到文档片段中\n while ($startDom.length) {\n upperListElems.push($startDom)\n $startDom = $startDom.next()\n }\n\n // =====================================\n // 当前序列类型和开头序列的类型 一致\n // 代表当前是一个 融合(把其他段落加入到开头序列中) 的操作\n // =====================================\n if (startNodeName === listType) {\n $containerFragment = createDocumentFragment()\n\n upperListElems.forEach($list => $containerFragment.append($list.elems[0]))\n\n // 生成 li 元属,并删除\n $containerFragment = createElementFragment(\n filterSelectionNodes($nodes), // 过滤元素节点数据\n $containerFragment\n )\n\n // 插入到开始序列末尾\n this.selectionRangeElem.set($containerFragment)\n // this.selectionRangeElem.set($startElem.elems[0])\n $startElem.elems[0].append($containerFragment)\n }\n\n // =====================================\n // 当前序列类型和开头序列的类型 不一致\n // 代表当前是一个 设置序列 的操作\n // =====================================\n else {\n // 创建 序列节点\n $containerFragment = createElement(listTarget)\n\n upperListElems.forEach($list => $containerFragment.append($list.elems[0]))\n\n // 生成 li 元素,并添加到 序列节点 当中,删除无用节点\n $containerFragment = createElementFragment(\n filterSelectionNodes($nodes), // 过滤普通节点\n $containerFragment\n )\n\n // 插入到开始元素\n this.selectionRangeElem.set($containerFragment)\n $($containerFragment).insertAfter($startElem)\n\n // 序列全选被掏空了后,就卸磨杀驴吧\n !$startElem.children()?.length && $startElem.remove()\n }\n }\n}\n","import { ContainerFragment } from '.'\nimport $, { DomElement } from '../../../utils/dom-core'\nimport { Exec, HandlerListOptions, ListHandle } from './ListHandle'\nimport {\n filterSelectionNodes,\n getEndPoint,\n insertBefore,\n createElement,\n createDocumentFragment,\n createElementFragment,\n} from '../utils'\n\nexport default class EndJoinListHandle extends ListHandle implements Exec {\n constructor(options: HandlerListOptions) {\n super(options)\n }\n\n exec(): void {\n const { editor, listType, listTarget, $endElem } = this.options\n\n // 容器 - HTML 文档片段\n let $containerFragment: ContainerFragment\n\n // 获取选中的段落\n const $nodes: DomElement[] = editor.selection.getSelectionRangeTopNodes()\n\n // 获取结束段落标签名\n const endNodeName = $endElem?.getNodeName()\n\n // 弹出 结束序列\n $nodes.pop()\n\n // 下序列元素数组\n const lowerListElems: DomElement[] = []\n // 获取结束元素\n let $endDom: DomElement = getEndPoint($endElem)\n // 获取下半序列中选中的内容\n while ($endDom.length) {\n lowerListElems.unshift($endDom)\n $endDom = $endDom.prev()\n }\n\n // =====================================\n // 当前序列类型和结束序列的类型 一致\n // 代表当前是一个 融合(把其他段落加入到结束序列中) 的操作\n // =====================================\n if (endNodeName === listType) {\n // 生成 li 元属,并删除原来的 dom 元素\n $containerFragment = createElementFragment(\n filterSelectionNodes($nodes), // 过滤元素节点数据\n createDocumentFragment() // 创建 文档片段\n )\n\n lowerListElems.forEach($list => $containerFragment.append($list.elems[0]))\n\n // 插入到结束序列之前\n this.selectionRangeElem.set($containerFragment)\n\n if ($endElem.children()?.length) {\n const $endElemChild = $endElem.children() as DomElement\n insertBefore($endElemChild, $containerFragment, $endElemChild.elems[0])\n } else {\n $endElem.elems[0].append($containerFragment)\n }\n }\n\n // =====================================\n // 当前序列类型和结束序列的类型 不一致\n // 代表当前是一个 设置序列 的操作\n // =====================================\n else {\n // 过滤元素节点数据\n const $selectionNodes = filterSelectionNodes($nodes)\n // 把下序列的内容添加到过滤元素中\n $selectionNodes.push(...lowerListElems)\n // 生成 li 元素并且添加到序列节点后删除原节点\n $containerFragment = createElementFragment(\n $selectionNodes,\n createElement(listTarget) // 创建 序列节点\n )\n\n // 插入到结束序列之前\n this.selectionRangeElem.set($containerFragment)\n $($containerFragment).insertBefore($endElem)\n\n // 序列全选被掏空了后,就卸磨杀驴吧\n !$endElem.children()?.length && $endElem.remove()\n }\n }\n}\n","import { ContainerFragment } from '.'\nimport { DomElement } from '../../../utils/dom-core'\nimport { Exec, HandlerListOptions, ListHandle } from './ListHandle'\nimport { filterSelectionNodes, createElement, createElementFragment } from '../utils'\n\nexport default class OtherListHandle extends ListHandle implements Exec {\n public range: Range\n\n constructor(options: HandlerListOptions, range: Range) {\n super(options)\n this.range = range\n }\n\n exec(): void {\n const { editor, listTarget } = this.options\n\n // 获取选中的段落\n const $nodes: DomElement[] = editor.selection.getSelectionRangeTopNodes()\n\n // 生成 li 元素并且添加到序列节点后删除原节点\n const $containerFragment: ContainerFragment = createElementFragment(\n filterSelectionNodes($nodes), // 过滤选取的元素\n createElement(listTarget) // 创建 序列节点\n )\n\n // 插入节点到选区\n this.selectionRangeElem.set($containerFragment)\n this.range.insertNode($containerFragment)\n }\n}\n","/**\n * @description 段落行高 LineHeight\n * @author lichunlin\n *\n */\n\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport lineHeightList from './lineHeightList'\nimport { UA } from '../../utils/util'\n\nclass LineHeight extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"行高\">\n <i class=\"w-e-icon-row-height\"></i>\n </div>`\n )\n let lineHeightMenu = new lineHeightList(editor, editor.config.lineHeights)\n const DropListMenu = {\n width: 100,\n title: '设置行高',\n type: 'list', // droplist 以列表形式展示\n list: lineHeightMenu.getItemList(),\n clickHandler: (value: string) => {\n //保存焦点\n editor.selection.saveRange()\n this.command(value)\n },\n }\n\n super($elem, editor, DropListMenu)\n }\n\n /**\n * 执行命令\n * @param value value\n */\n public command(value: string): void {\n let selection = window.getSelection ? window.getSelection() : document.getSelection()\n //允许设置dom\n const allowArray: string[] = ['P']\n const editor = this.editor\n let st: string = ''\n //恢复焦点\n editor.selection.restoreSelection()\n const $selectionElem = $(editor.selection.getSelectionContainerElem())\n\n if (!$selectionElem?.length) return\n\n const $selectionAll = $(editor.selection.getSelectionContainerElem())\n // let dom:HTMLElement= $selectionElem.elems[0]\n let dom: HTMLElement = $(editor.selection.getSelectionStartElem()).elems[0]\n //获取元素的style\n let style: string | null = ''\n let styleList: string[] = []\n //点击默认的时候删除line-height属性 并重新设置 style\n let styleStr: string = ''\n\n //选中多行操作\n if ($selectionElem && editor.$textElem.equal($selectionElem)) {\n let isIE = UA.isIE()\n //获取range 开头结束的dom在 祖父元素的下标\n let indexStore: Array<number> = []\n let arrayDom_a: Array<HTMLElement> = []\n let arrayDom_b: Array<HTMLElement> = []\n //获取range 开头结束的dom\n const StartElem: DomElement = $(editor.selection.getSelectionStartElem())\n const EndElem: DomElement = $(editor.selection.getSelectionEndElem())\n const childList: NodeListOf<ChildNode> | undefined = editor.selection.getRange()\n ?.commonAncestorContainer.childNodes\n arrayDom_a.push(this.getDom(StartElem.elems[0]))\n childList?.forEach((item, index) => {\n if (item === this.getDom(StartElem.elems[0])) {\n indexStore.push(index)\n }\n if (item === this.getDom(EndElem.elems[0])) {\n indexStore.push(index)\n }\n })\n //遍历 获取头尾之间的dom元素\n let i = 0\n let d: HTMLElement\n arrayDom_b.push(this.getDom(StartElem.elems[0]))\n while (arrayDom_a[i] !== this.getDom(EndElem.elems[0])) {\n d = $(arrayDom_a[i].nextElementSibling).elems[0]\n if (allowArray.indexOf($(d).getNodeName()) !== -1) {\n arrayDom_b.push(d)\n arrayDom_a.push(d)\n } else {\n arrayDom_a.push(d)\n }\n i++\n }\n\n //设置段落选取 全选\n if ($(arrayDom_a[0]).getNodeName() !== 'P') {\n i = 0\n //遍历集合得到第一个p标签的下标\n for (var k = 0; k < arrayDom_a.length; k++) {\n if ($(arrayDom_a[k]).getNodeName() === 'P') {\n i = k\n break\n }\n }\n //i===0 说明选区中没有p段落\n if (i === 0) {\n return\n }\n let _i = 0\n while (_i !== i) {\n arrayDom_a.shift()\n _i++\n }\n }\n //设置替换的选区\n this.setRange(arrayDom_a[0], arrayDom_a[arrayDom_a.length - 1])\n //生成innerHtml html字符串\n arrayDom_a.forEach(item => {\n style = item.getAttribute('style')\n styleList = style ? style.split(';') : []\n styleStr = this.styleProcessing(styleList)\n\n if ($(item).getNodeName() === 'P') {\n //判断是否 点击默认\n if (value) {\n styleStr += value ? `line-height:${value};` : ''\n }\n }\n\n if (!isIE) {\n st += `<${$(item).getNodeName().toLowerCase()} style=\"${styleStr}\">${\n item.innerHTML\n }</${$(item).getNodeName().toLowerCase()}>`\n } else {\n $(item).css('line-height', value)\n }\n })\n\n if (st) {\n this.action(st, editor)\n }\n\n //恢复已选择的选区\n dom = $selectionAll.elems[0]\n this.setRange(dom.children[indexStore[0]], dom.children[indexStore[1]])\n return\n }\n\n //遍历dom 获取祖父元素 直到contenteditable属性的div标签\n dom = this.getDom(dom)\n\n //校验允许lineheight设置标签\n if (allowArray.indexOf($(dom).getNodeName()) === -1) {\n return\n }\n style = dom.getAttribute('style')\n styleList = style ? style.split(';') : []\n //全选 dom下所有的内容\n selection?.selectAllChildren(dom)\n //保存range\n editor.selection.saveRange()\n //判断是否存在value 默认 移除line-height\n if (!value) {\n if (style) {\n styleStr = this.styleProcessing(styleList)\n //避免没有其它属性 只留下 style 减少代码\n if (styleStr === '') {\n st = `<${$(dom).getNodeName().toLowerCase()}>${dom.innerHTML}</${$(dom)\n .getNodeName()\n .toLowerCase()}>`\n } else {\n st = `<${$(dom).getNodeName().toLowerCase()} style=\"${styleStr}\">${\n dom.innerHTML\n }</${$(dom).getNodeName().toLowerCase()}>`\n }\n this.action(st, editor)\n }\n return\n }\n if (style) {\n //存在style 检索其它style属性\n styleStr = this.styleProcessing(styleList) + `line-height:${value};`\n } else {\n styleStr = `line-height:${value};`\n }\n st = `<${$(dom).getNodeName().toLowerCase()} style=\"${styleStr}\">${dom.innerHTML}</${$(dom)\n .getNodeName()\n .toLowerCase()}>`\n\n //防止BLOCKQUOTE叠加 or IE下导致P嵌套出现误删\n if ($(dom).getNodeName() === 'BLOCKQUOTE' || UA.isIE()) {\n $(dom).css('line-height', value)\n } else {\n this.action(st, editor)\n }\n }\n\n /**\n * 遍历dom 获取祖父元素 直到contenteditable属性的div标签\n *\n */\n public getDom(dom: HTMLElement): HTMLElement {\n let DOM: HTMLElement = $(dom).elems[0]\n if (!DOM.parentNode) {\n return DOM\n }\n function getParentNode($node: HTMLElement, editor: Editor): HTMLElement {\n const $parent = $($node.parentNode)\n if (editor.$textElem.equal($parent)) {\n return $node\n } else {\n return getParentNode($parent.elems[0], editor)\n }\n }\n DOM = getParentNode(DOM, this.editor)\n\n return DOM\n }\n\n /**\n * 执行 document.execCommand\n *\n */\n public action(html_str: string, editor: Editor): void {\n editor.cmd.do('insertHTML', html_str)\n }\n\n /**\n * style 处理\n */\n public styleProcessing(styleList: Array<string>): string {\n let styleStr = ''\n styleList.forEach(item => {\n item !== '' && item.indexOf('line-height') === -1\n ? (styleStr = styleStr + item + ';')\n : ''\n })\n return styleStr\n }\n\n /**\n * 段落全选 比如避免11变成111\n */\n public setRange(startDom: Node, endDom: Node): void {\n const editor = this.editor\n let selection = window.getSelection ? window.getSelection() : document.getSelection()\n //清除所有的选区\n selection?.removeAllRanges()\n const range = document.createRange()\n let star = startDom\n let end = endDom\n range.setStart(star, 0)\n range.setEnd(end, 1)\n selection?.addRange(range)\n //保存设置好的选区\n editor.selection.saveRange()\n //清除所有的选区\n selection?.removeAllRanges()\n //恢复选区\n editor.selection.restoreSelection()\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {\n const editor = this.editor\n const $selectionElem = editor.selection.getSelectionContainerElem()\n if ($selectionElem && editor.$textElem.equal($selectionElem)) {\n //避免选中多行设置\n return\n }\n let dom: DomElement | HTMLElement = $(editor.selection.getSelectionStartElem())\n // 有些情况下 dom 可能为空,比如编辑器初始化\n if (dom.length === 0) return\n\n dom = this.getDom(dom.elems[0])\n let style: string | null = dom.getAttribute('style') ? dom.getAttribute('style') : ''\n\n //判断当前标签是否具有line-height属性\n if (style && style.indexOf('line-height') !== -1) {\n this.active()\n } else {\n this.unActive()\n }\n }\n}\n\nexport default LineHeight\n","/**\n * @description 行高 菜单\n * @author lichunlin\n */\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { DropListItem } from '../menu-constructors/DropList'\n\nclass lineHeightList {\n private itemList: DropListItem[]\n\n constructor(editor: Editor, list: string[]) {\n this.itemList = [{ $elem: $(`<span>${editor.i18next.t('默认')}</span>`), value: '' }]\n list.forEach(item => {\n this.itemList.push({\n $elem: $(`<span>${item}</span>`),\n value: item,\n })\n })\n }\n\n public getItemList(): DropListItem[] {\n return this.itemList\n }\n}\n\nexport default lineHeightList\n","/**\n * @description 撤销\n * @author tonghan\n */\n\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport BtnMenu from '../menu-constructors/BtnMenu'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nclass Undo extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"撤销\">\n <i class=\"w-e-icon-undo\"></i>\n </div>`\n )\n super($elem, editor)\n }\n\n /**\n * 点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n editor.history.revoke()\n\n // 重新创建 range是处理当初始化编辑器API插入内容后撤销range 不在编辑器内部的问题\n const children = editor.$textElem.children()\n\n if (!children?.length) return\n\n const $last = children.last()\n editor.selection.createRangeByElem($last, false, true)\n editor.selection.restoreSelection()\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {\n // 标准模式下才进行操作\n if (!this.editor.isCompatibleMode) {\n if (this.editor.history.size[0]) {\n this.active()\n } else {\n this.unActive()\n }\n }\n }\n}\n\nexport default Undo\n","/**\n * @description 重做\n * @author tonghan\n */\n\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport BtnMenu from '../menu-constructors/BtnMenu'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nclass Redo extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"恢复\">\n <i class=\"w-e-icon-redo\"></i>\n </div>`\n )\n super($elem, editor)\n }\n\n /**\n * 点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n editor.history.restore()\n\n // 重新创建 range是处理当初始化编辑器API插入内容后撤销range 不在编辑器内部的问题\n const children = editor.$textElem.children()\n\n if (!children?.length) return\n\n const $last = children.last()\n editor.selection.createRangeByElem($last, false, true)\n editor.selection.restoreSelection()\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {\n // 标准模式下才进行操作\n if (!this.editor.isCompatibleMode) {\n if (this.editor.history.size[1]) {\n this.active()\n } else {\n this.unActive()\n }\n }\n }\n}\n\nexport default Redo\n","/**\n * @description 创建table\n * @author lichunlin\n */\n\nimport PanelMenu from '../menu-constructors/PanelMenu'\nimport Editor from '../../editor/index'\nimport $ from '../../utils/dom-core'\nimport createPanelConf from './create-panel-conf'\nimport Panel from '../menu-constructors/Panel'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport bindEvent from './bind-event/index'\n\nclass Table extends PanelMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n '<div class=\"w-e-menu\" data-title=\"表格\"><i class=\"w-e-icon-table2\"></i></div>'\n )\n super($elem, editor)\n\n // 绑定事件\n bindEvent(editor)\n }\n\n /**\n * 菜单点击事件\n */\n public clickHandler(): void {\n this.createPanel()\n }\n\n /**\n * 创建 panel\n */\n private createPanel(): void {\n const conf = createPanelConf(this.editor)\n const panel = new Panel(this, conf)\n panel.create()\n }\n\n /**\n * 尝试修改菜单 active 状态\n */\n public tryChangeActive() {}\n}\n\nexport default Table\n","/**\n * @description table 菜单 panel tab 配置\n * @author lichunlin\n */\n\nimport Editor from '../../editor/index'\nimport { PanelConf, PanelTabConf } from '../menu-constructors/Panel'\nimport { getRandom } from '../../utils/util'\nimport $ from '../../utils/dom-core'\nimport '../../assets/style/create-panel-conf.less'\nimport CreateTable from './create-table'\n\n/**\n * 判断一个数值是否为正整数\n * @param { number } n 被验证的值\n */\nfunction isPositiveInteger(n: number): boolean {\n //是否为正整数\n return n > 0 && Number.isInteger(n)\n}\n\nexport default function (editor: Editor): PanelConf {\n const createTable = new CreateTable(editor)\n\n // panel 中需要用到的id\n const colId = getRandom('w-col-id')\n const rowId = getRandom('w-row-id')\n const insertBtnId = getRandom('btn-link')\n\n const i18nPrefix = 'menus.panelMenus.table.'\n const t = (text: string): string => {\n return editor.i18next.t(text)\n }\n\n // tabs 配置 -----------------------------------------\n const tabsConf: PanelTabConf[] = [\n {\n title: t(`${i18nPrefix}插入表格`),\n tpl: `<div>\n <div class=\"w-e-table\">\n <span>${t('创建')}</span>\n <input id=\"${rowId}\" type=\"text\" class=\"w-e-table-input\" value=\"5\"/></td>\n <span>${t(`${i18nPrefix}行`)}</span>\n <input id=\"${colId}\" type=\"text\" class=\"w-e-table-input\" value=\"5\"/></td>\n <span>${\n t(`${i18nPrefix}列`) + t(`${i18nPrefix}的`) + t(`${i18nPrefix}表格`)\n }</span>\n </div>\n <div class=\"w-e-button-container\">\n <button type=\"button\" id=\"${insertBtnId}\" class=\"right\">${t(\n '插入'\n )}</button>\n </div>\n </div>`,\n events: [\n {\n selector: '#' + insertBtnId,\n type: 'click',\n fn: () => {\n const colValue = Number($('#' + colId).val())\n const rowValue = Number($('#' + rowId).val())\n //校验是否传值\n if (isPositiveInteger(rowValue) && isPositiveInteger(colValue)) {\n createTable.createAction(rowValue, colValue)\n return true\n } else {\n editor.config.customAlert('表格行列请输入正整数', 'warning')\n return false\n }\n // 返回 true 表示函数执行结束之后关闭 panel\n },\n bindEnter: true,\n },\n ],\n },\n ]\n // tabs end\n\n // 最终的配置 -----------------------------------------\n const conf: PanelConf = {\n width: 330,\n height: 0,\n tabs: [],\n }\n conf.tabs.push(tabsConf[0])\n\n return conf\n}\n","module.exports = require(\"core-js-pure/stable/number/is-integer\");","var parent = require('../../es/number/is-integer');\n\nmodule.exports = parent;\n","require('../../modules/es.number.is-integer');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Number.isInteger;\n","var $ = require('../internals/export');\nvar isInteger = require('../internals/is-integer');\n\n// `Number.isInteger` method\n// https://tc39.es/ecma262/#sec-number.isinteger\n$({ target: 'Number', stat: true }, {\n isInteger: isInteger\n});\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `Number.isInteger` method implementation\n// https://tc39.es/ecma262/#sec-number.isinteger\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./create-panel-conf.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-table {\\n display: flex;\\n}\\n.w-e-table .w-e-table-input {\\n width: 40px;\\n text-align: center!important;\\n margin: 0 5px;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * @description 创建tabel\n * @author lichunlin\n */\n\nimport { EMPTY_P } from '../../utils/const'\nimport Editor from '../../editor/index'\nimport $ from '../../utils/dom-core'\n\nclass CreateTable {\n private editor: Editor\n\n constructor(editor: Editor) {\n this.editor = editor\n }\n\n /**\n * 执行创建\n * @param rowValue 行数\n * @param colValue 列数\n */\n public createAction(rowValue: number, colValue: number) {\n const editor = this.editor\n\n //不允许在有序列表中添加table\n let $selectionElem = $(editor.selection.getSelectionContainerElem())\n const $ul = $($selectionElem.elems[0]).parentUntilEditor('UL', editor)\n const $ol = $($selectionElem.elems[0]).parentUntilEditor('OL', editor)\n if ($ul || $ol) {\n return\n }\n\n const tableDom: string = this.createTableHtml(rowValue, colValue)\n editor.cmd.do('insertHTML', tableDom)\n }\n\n /**\n * 创建table、行、列\n * @param rowValue 行数\n * @param colValue 列数\n */\n public createTableHtml(rowValue: number, colValue: number): string {\n let rowStr: string = ''\n let colStr: string = ''\n for (let i = 0; i < rowValue; i++) {\n colStr = ''\n for (let j = 0; j < colValue; j++) {\n if (i === 0) {\n colStr = colStr + '<th></th>'\n } else {\n colStr = colStr + '<td></td>'\n }\n }\n rowStr = rowStr + '<tr>' + colStr + '</tr>'\n }\n const tableDom =\n `<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\"><tbody>` +\n rowStr +\n `</tbody></table>${EMPTY_P}`\n return tableDom\n }\n}\n\nexport default CreateTable\n","/**\n * @description 绑定点击事件\n * @author lichunlin\n */\n\nimport Editor from '../../../editor/index'\nimport bindTooltip from './tooltip-event'\nimport { bindEventKeyboardEvent, bindClickEvent } from './table-event'\n\n/**\n * 绑定事件\n * @param editor 编辑器实例\n */\nfunction bindEvent(editor: Editor): void {\n //Tooltip\n bindTooltip(editor)\n\n bindEventKeyboardEvent(editor)\n\n bindClickEvent(editor)\n}\n\nexport default bindEvent\n","/**\n * @description tooltip 事件\n * @author lichunlin\n */\n\nimport $, { DomElement } from '../../../utils/dom-core'\nimport Tooltip, { TooltipConfType } from '../../menu-constructors/Tooltip'\nimport Editor from '../../../editor/index'\n\n//操作事件\nimport operatingEvent from './event/operating-event'\n\nimport getNode from './event/getNode'\nimport { EMPTY_P } from '../../../utils/const'\n\n/**\n * 生成 Tooltip 的显示隐藏函数\n */\nfunction createShowHideFn(editor: Editor) {\n let tooltip: Tooltip | null\n\n /**\n * 显示 tooltip\n * @param table元素\n */\n function showTableTooltip($node: DomElement) {\n const getnode = new getNode(editor)\n\n const i18nPrefix = 'menus.panelMenus.table.'\n const t = (text: string, prefix: string = i18nPrefix): string => {\n return editor.i18next.t(prefix + text)\n }\n\n const conf: TooltipConfType = [\n {\n // $elem: $(\"<span class='w-e-icon-trash-o'></span>\"),\n $elem: $(`<span>${t('删除表格')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n // 选中img元素\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n editor.cmd.do('insertHTML', EMPTY_P)\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $(`<span>${t('添加行')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n // 禁止多选操作\n let isMore = isMoreRowAction(editor)\n if (isMore) {\n return true\n }\n //当前元素\n let selectDom = $(editor.selection.getSelectionStartElem())\n //当前行\n let $currentRow = getnode.getRowNode(selectDom.elems[0])\n if (!$currentRow) {\n return true\n }\n //获取当前行的index\n const index = Number(getnode.getCurrentRowIndex($node.elems[0], $currentRow))\n //生成要替换的html\n let htmlStr = getnode.getTableHtml($node.elems[0])\n //生成新的table\n let newdom: string = getnode.getTableHtml(\n operatingEvent.ProcessingRow($(htmlStr), index).elems[0]\n )\n newdom = _isEmptyP($node, newdom)\n // 选中table\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n\n editor.cmd.do('insertHTML', newdom)\n\n return true\n },\n },\n {\n $elem: $(`<span>${t('删除行')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n // 禁止多选操作\n let isMore = isMoreRowAction(editor)\n if (isMore) {\n return true\n }\n //当前元素\n let selectDom = $(editor.selection.getSelectionStartElem())\n //当前行\n let $currentRow = getnode.getRowNode(selectDom.elems[0])\n if (!$currentRow) {\n return true\n }\n //获取当前行的index\n const index = Number(getnode.getCurrentRowIndex($node.elems[0], $currentRow))\n //生成要替换的html\n let htmlStr = getnode.getTableHtml($node.elems[0])\n //获取新生成的table 判断是否是最后一行被删除 是 删除整个table\n const trLength: number = operatingEvent.DeleteRow($(htmlStr), index).elems[0]\n .children[0].children.length\n //生成新的table\n let newdom: string = ''\n // 选中table\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n\n if (trLength === 0) {\n newdom = EMPTY_P\n } else {\n newdom = getnode.getTableHtml(\n operatingEvent.DeleteRow($(htmlStr), index).elems[0]\n )\n }\n newdom = _isEmptyP($node, newdom)\n editor.cmd.do('insertHTML', newdom)\n\n return true\n },\n },\n {\n $elem: $(`<span>${t('添加列')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n // 禁止多选操作\n let isMore = isMoreRowAction(editor)\n if (isMore) {\n return true\n }\n //当前元素\n let selectDom = $(editor.selection.getSelectionStartElem())\n //当前列的index\n const index = getnode.getCurrentColIndex(selectDom.elems[0])\n //生成要替换的html\n let htmlStr = getnode.getTableHtml($node.elems[0])\n //生成新的table\n let newdom: string = getnode.getTableHtml(\n operatingEvent.ProcessingCol($(htmlStr), index).elems[0]\n )\n newdom = _isEmptyP($node, newdom)\n // 选中table\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n\n editor.cmd.do('insertHTML', newdom)\n\n return true\n },\n },\n {\n $elem: $(`<span>${t('删除列')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n // 禁止多选操作\n let isMore = isMoreRowAction(editor)\n if (isMore) {\n return true\n }\n //当前元素\n let selectDom = $(editor.selection.getSelectionStartElem())\n //当前列的index\n const index = getnode.getCurrentColIndex(selectDom.elems[0])\n //生成要替换的html\n let htmlStr = getnode.getTableHtml($node.elems[0])\n //获取新生成的table 判断是否是最后一列被删除 是 删除整个table\n const newDom = operatingEvent.DeleteCol($(htmlStr), index)\n // 获取子节点的数量\n const tdLength: number = newDom.elems[0].children[0].children[0].children.length\n\n //生成新的table\n let newdom: string = ''\n // 选中table\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n\n // 如果没有列了 则替换成空行\n if (tdLength === 0) {\n newdom = EMPTY_P\n } else {\n newdom = getnode.getTableHtml(newDom.elems[0])\n }\n newdom = _isEmptyP($node, newdom)\n editor.cmd.do('insertHTML', newdom)\n\n return true\n },\n },\n {\n $elem: $(`<span>${t('设置表头')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n // 禁止多选操作\n let isMore = isMoreRowAction(editor)\n if (isMore) {\n return true\n }\n //当前元素\n let selectDom = $(editor.selection.getSelectionStartElem())\n //当前行\n let $currentRow = getnode.getRowNode(selectDom.elems[0])\n if (!$currentRow) {\n return true\n }\n //获取当前行的index\n let index = Number(getnode.getCurrentRowIndex($node.elems[0], $currentRow))\n if (index !== 0) {\n //控制在table的第一行\n index = 0\n }\n //生成要替换的html\n let htmlStr = getnode.getTableHtml($node.elems[0])\n //生成新的table\n let newdom: string = getnode.getTableHtml(\n operatingEvent.setTheHeader($(htmlStr), index, 'th').elems[0]\n )\n newdom = _isEmptyP($node, newdom)\n // 选中table\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n\n editor.cmd.do('insertHTML', newdom)\n\n return true\n },\n },\n {\n $elem: $(`<span>${t('取消表头')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n //当前元素\n let selectDom = $(editor.selection.getSelectionStartElem())\n //当前行\n let $currentRow = getnode.getRowNode(selectDom.elems[0])\n if (!$currentRow) {\n return true\n }\n //获取当前行的index\n let index = Number(getnode.getCurrentRowIndex($node.elems[0], $currentRow))\n if (index !== 0) {\n //控制在table的第一行\n index = 0\n }\n //生成要替换的html\n let htmlStr = getnode.getTableHtml($node.elems[0])\n //生成新的table\n let newdom: string = getnode.getTableHtml(\n operatingEvent.setTheHeader($(htmlStr), index, 'td').elems[0]\n )\n newdom = _isEmptyP($node, newdom)\n // 选中table\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n\n editor.cmd.do('insertHTML', newdom)\n\n return true\n },\n },\n ]\n\n tooltip = new Tooltip(editor, $node, conf)\n tooltip.create()\n }\n\n /**\n * 隐藏 tooltip\n */\n function hideTableTooltip() {\n // 移除 tooltip\n if (tooltip) {\n tooltip.remove()\n tooltip = null\n }\n }\n\n return {\n showTableTooltip,\n hideTableTooltip,\n }\n}\n\n/**\n * 判断是否是多行\n */\nfunction isMoreRowAction(editor: Editor): boolean {\n const $startElem = editor.selection.getSelectionStartElem()\n const $endElem = editor.selection.getSelectionEndElem()\n if ($startElem?.elems[0] !== $endElem?.elems[0]) {\n return true\n } else {\n return false\n }\n}\n\n/**\n * 绑定 tooltip 事件\n * @param editor 编辑器实例\n */\nexport default function bindTooltipEvent(editor: Editor) {\n const { showTableTooltip, hideTableTooltip } = createShowHideFn(editor)\n\n // 点击table元素是显示 tooltip\n editor.txt.eventHooks.tableClickEvents.push(showTableTooltip)\n\n // 点击其他地方,或者滚动时,隐藏 tooltip\n editor.txt.eventHooks.clickEvents.push(hideTableTooltip)\n editor.txt.eventHooks.keyupEvents.push(hideTableTooltip)\n editor.txt.eventHooks.toolbarClickEvents.push(hideTableTooltip)\n editor.txt.eventHooks.menuClickEvents.push(hideTableTooltip)\n editor.txt.eventHooks.textScrollEvents.push(hideTableTooltip)\n}\n\n/**\n * 判断表格的下一个节点是否是空行\n */\nfunction _isEmptyP($node: DomElement, newdom: string): string {\n // 当表格的下一个兄弟节点是空行时,在 newdom 后添加 EMPTY_P\n let nextNode = $node.elems[0].nextSibling as HTMLElement\n if (!nextNode || nextNode.innerHTML === '<br>') {\n newdom += `${EMPTY_P}`\n }\n return newdom\n}\n","import $, { DomElement } from '../../../../utils/dom-core'\n\n/**\n * 处理新添加行\n * @param $node 整个table\n * @param _index 行的inde\n */\nfunction ProcessingRow($node: DomElement, _index: number): DomElement {\n //执行获取tbody节点\n let $dom = generateDomAction($node)\n //取出所有的行\n let domArray: HTMLElement[] = Array.prototype.slice.apply($dom.children)\n //列的数量\n const childrenLength = domArray[0].children.length\n //创建新tr\n let tr = document.createElement('tr')\n for (let i = 0; i < childrenLength; i++) {\n const td = document.createElement('td')\n tr.appendChild(td)\n }\n //插入集合中\n domArray.splice(_index + 1, 0, tr)\n //移除、新增节点事件\n removeAndInsertAction($dom, domArray)\n return $($dom.parentNode)\n}\n\n/**\n * 处理新添加列\n * @param $node 整个table\n * @param _index 列的inde\n */\nfunction ProcessingCol($node: DomElement, _index: number): DomElement {\n //执行获取tbody节点\n let $dom = generateDomAction($node)\n //取出所有的行\n let domArray: HTMLElement[] = Array.prototype.slice.apply($dom.children)\n //创建td\n for (let i = 0; i < domArray.length; i++) {\n let cArray: Node[] = []\n //取出所有的列\n Array.from(domArray[i].children).forEach(item => {\n cArray.push(item)\n })\n //移除行的旧的子节点\n while (domArray[i].children.length !== 0) {\n domArray[i].removeChild(domArray[i].children[0])\n }\n //列分th td\n let td =\n $(cArray[0]).getNodeName() !== 'TH'\n ? document.createElement('td')\n : document.createElement('th')\n // let td = document.createElement('td')\n cArray.splice(_index + 1, 0, td)\n //插入新的子节点\n for (let j = 0; j < cArray.length; j++) {\n domArray[i].appendChild(cArray[j])\n }\n }\n //移除、新增节点事件\n removeAndInsertAction($dom, domArray)\n return $($dom.parentNode)\n}\n\n/**\n * 处理删除行\n * @param $node 整个table\n * @param _index 行的inde\n */\nfunction DeleteRow($node: DomElement, _index: number): DomElement {\n //执行获取tbody节点\n let $dom = generateDomAction($node)\n //取出所有的行\n let domArray: HTMLElement[] = Array.prototype.slice.apply($dom.children)\n //删除行\n domArray.splice(_index, 1)\n //移除、新增节点事件\n removeAndInsertAction($dom, domArray)\n return $($dom.parentNode)\n}\n\n/**\n * 处理删除列\n * @param $node\n * @param _index\n */\nfunction DeleteCol($node: DomElement, _index: number): DomElement {\n //执行获取tbody节点\n let $dom = generateDomAction($node)\n //取出所有的行\n let domArray: HTMLElement[] = Array.prototype.slice.apply($dom.children)\n //创建td\n for (let i = 0; i < domArray.length; i++) {\n let cArray: Node[] = []\n //取出所有的列\n Array.from(domArray[i].children).forEach(item => {\n cArray.push(item)\n })\n //移除行的旧的子节点\n while (domArray[i].children.length !== 0) {\n domArray[i].removeChild(domArray[i].children[0])\n }\n cArray.splice(_index, 1)\n //插入新的子节点\n for (let j = 0; j < cArray.length; j++) {\n domArray[i].appendChild(cArray[j])\n }\n }\n //移除、新增节点事件\n removeAndInsertAction($dom, domArray)\n return $($dom.parentNode)\n}\n\n/**\n * 处理设置/取消表头\n * @param $node\n * @param _index\n * @type 替换的标签 th还是td\n */\nfunction setTheHeader($node: DomElement, _index: number, type: string): DomElement {\n // 执行获取tbody节点\n let $dom = generateDomAction($node)\n // 取出所有的行\n let domArray: HTMLElement[] = Array.prototype.slice.apply($dom.children)\n // 列的数量\n const cols = domArray[_index].children\n // 创建新tr\n let tr = document.createElement('tr')\n for (let i = 0; i < cols.length; i++) {\n // 根据type(td 或者 th)生成对应的el\n const el = document.createElement(type)\n const col = cols[i]\n /**\n * 没有使用children是因为谷歌纯文本内容children数组就为空而火狐纯文本内容是“xxx<br>”使用children只能获取br\n * 当然使用childNodes也涵盖支持我们表头使用表情代码块等不管是设置还是取消都会保留第一行\n */\n Array.from(col.childNodes).forEach(item => {\n el.appendChild(item)\n })\n tr.appendChild(el)\n }\n //插入集合中\n domArray.splice(_index, 1, tr)\n //移除、新增节点事件\n removeAndInsertAction($dom, domArray)\n return $($dom.parentNode)\n}\n\n/**\n * 封装移除、新增节点事件\n * @param $dom tbody节点\n * @param domArray 所有的行\n */\nfunction removeAndInsertAction($dom: Element, domArray: Node[]) {\n //移除所有的旧的子节点\n while ($dom.children.length !== 0) {\n $dom.removeChild($dom.children[0])\n }\n //插入新的子节点\n for (let i = 0; i < domArray.length; i++) {\n $dom.appendChild(domArray[i])\n }\n}\n\n/**\n * 封装判断是否tbody节点\n * 粘贴的table 第一个节点是<colgroup> 最后的节点<tbody>\n * @param dom\n */\nfunction generateDomAction($node: DomElement) {\n let $dom = $node.elems[0].children[0]\n if ($dom.nodeName === 'COLGROUP') {\n $dom = $node.elems[0].children[$node.elems[0].children.length - 1]\n }\n return $dom\n}\n\nexport default {\n ProcessingRow,\n ProcessingCol,\n DeleteRow,\n DeleteCol,\n setTheHeader,\n}\n","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","/**\n * @description 获取dom节点\n * @author lichunlin\n */\n\nimport $ from '../../../../utils/dom-core'\nimport Editor from '../../../../editor/index'\n\nclass getNode {\n public editor: Editor\n constructor(editor: Editor) {\n this.editor = editor\n }\n\n /**\n * 获取焦点所在行\n * @param $node 当前table\n */\n public getRowNode($node: HTMLElement): HTMLElement | null | undefined {\n let DOM: HTMLElement | null | undefined = $($node).elems[0]\n if (!DOM.parentNode) {\n return DOM\n }\n DOM = $(DOM).parentUntil('TR', DOM)?.elems[0]\n return DOM\n }\n\n /**\n * 获取当前行的下标\n * @param $node 当前table\n * @param $dmo 当前行节点\n */\n public getCurrentRowIndex($node: HTMLElement, $dom: HTMLElement): Number {\n let _index: number = 0\n let $nodeChild = $node.children[0]\n //粘贴的table 最后一个节点才是tbody\n if ($nodeChild.nodeName === 'COLGROUP') {\n $nodeChild = $node.children[$node.children.length - 1]\n }\n Array.from($nodeChild.children).forEach((item, index) => {\n item === $dom ? (_index = index) : ''\n })\n return _index\n }\n\n /**\n * 获取当前列的下标\n * @param $node 当前点击元素\n */\n public getCurrentColIndex($node: HTMLElement): number {\n //当前行\n let _index: number = 0\n //获取当前列 td或th\n let rowDom =\n $($node).getNodeName() === 'TD' || $($node).getNodeName() === 'TH'\n ? $node\n : $($node).parentUntil('TD', $node)?.elems[0]\n let colDom = $(rowDom).parent()\n Array.from(colDom.elems[0].children).forEach((item, index) => {\n item === rowDom ? (_index = index) : ''\n })\n return _index\n }\n\n /**\n * 返回元素html字符串\n * @param $node\n */\n public getTableHtml($node: HTMLElement): string {\n const htmlStr = `<table border=\"0\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">${$(\n $node\n ).html()}</table>`\n return htmlStr\n }\n}\n\nexport default getNode\n","/**\n * @description 保证table后面始终有dom\n * @author yanbiao(86driver)\n */\nimport Editor from '../../../editor/index'\nimport $, { DomElement } from '../../../utils/dom-core'\n\n/**\n * @description 是否是空行\n * @param topElem\n */\nfunction isEmptyLine(topElem: DomElement): boolean {\n if (!topElem.length) {\n return false\n }\n\n const dom = topElem.elems[0]\n\n return dom.nodeName === 'P' && dom.innerHTML === '<br>'\n}\nexport function bindClickEvent(editor: Editor) {\n function handleTripleClick($dom: DomElement, e: MouseEvent) {\n // 处理三击事件此时选区可能离开table修正回来\n if (e.detail >= 3) {\n const selection = window.getSelection()\n if (selection) {\n const { focusNode, anchorNode } = selection\n const $anchorNode = $(anchorNode?.parentElement)\n // 当focusNode离开了table\n if (!$dom.isContain($(focusNode))) {\n const $td =\n $anchorNode.elems[0].tagName === 'TD'\n ? $anchorNode\n : $anchorNode.parentUntilEditor('td', editor)\n if ($td) {\n const range = editor.selection.getRange()\n range?.setEnd($td.elems[0], $td.elems[0].childNodes.length)\n editor.selection.restoreSelection()\n }\n }\n }\n }\n }\n\n editor.txt.eventHooks.tableClickEvents.push(handleTripleClick)\n}\n\nexport function bindEventKeyboardEvent(editor: Editor) {\n const { txt, selection } = editor\n const { keydownEvents } = txt.eventHooks\n\n keydownEvents.push(function (e) {\n // 实时保存选区\n editor.selection.saveRange()\n const $selectionContainerElem = selection.getSelectionContainerElem()\n if ($selectionContainerElem) {\n const $topElem = $selectionContainerElem.getNodeTop(editor)\n const $preElem = $topElem.length\n ? $topElem.prev().length\n ? $topElem.prev()\n : null\n : null\n\n // 删除时选区前面是table且选区没有选中文本阻止默认行为\n if (\n $preElem &&\n $preElem.getNodeName() === 'TABLE' &&\n selection.isSelectionEmpty() &&\n selection.getCursorPos() === 0 &&\n e.keyCode === 8\n ) {\n const $nextElem = $topElem.next()\n const hasNext = !!$nextElem.length\n\n /**\n * 如果当前是空行,并且当前行下面还有内容,删除当前行\n * 浏览器默认行为不会删除掉当前行的<br>标签\n * 因此阻止默认行为,特殊处理\n */\n if (hasNext && isEmptyLine($topElem)) {\n $topElem.remove()\n editor.selection.setRangeToElem($nextElem.elems[0])\n }\n e.preventDefault()\n }\n }\n })\n}\n","/**\n * @description 代码 菜单\n * @author lkw\n */\n\nimport PanelMenu from '../menu-constructors/PanelMenu'\nimport Editor from '../../editor/index'\nimport $ from '../../utils/dom-core'\nimport { replaceSpecialSymbol, deepClone } from '../../utils/util'\nimport createPanelConf from './create-panel-conf'\nimport isActive from './is-active'\nimport Panel from '../menu-constructors/Panel'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport bindEvent from './bind-event/index'\n\nexport function formatCodeHtml(editor: Editor, html: string) {\n if (!html) return html\n\n html = deleteHighlightCode(html)\n\n html = formatEnterCode(html)\n\n html = replaceSpecialSymbol(html)\n\n return html\n\n // 格式化换换所产生的code标签\n function formatEnterCode(html: string): string {\n let preArr = html.match(/<pre[\\s|\\S]+?\\/pre>/g)\n\n if (preArr === null) return html\n\n preArr.map(item => {\n //将连续的code标签换为\\n换行\n html = html.replace(item, item.replace(/<\\/code><code>/g, '\\n').replace(/<br>/g, ''))\n })\n\n return html\n }\n\n // highlight格式化方法\n function deleteHighlightCode(html: string): string {\n // 获取所有hljs文本\n let m = html.match(/<span\\sclass=\"hljs[\\s|\\S]+?\\/span>/gm)\n\n // 没有代码渲染文本则退出\n // @ts-ignore\n if (!m || !m.length) return html\n\n // 获取替换文本\n let r = deepClone(m).map((i: string) => {\n i = i.replace(/<span\\sclass=\"hljs[^>]+>/, '')\n return i.replace(/<\\/span>/, '')\n })\n\n // @ts-ignore\n for (let i = 0; i < m.length; i++) {\n html = html.replace(m[i], r[i])\n }\n\n return deleteHighlightCode(html)\n }\n}\n\nclass Code extends PanelMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n '<div class=\"w-e-menu\" data-title=\"代码\"><i class=\"w-e-icon-terminal\"></i></div>'\n )\n super($elem, editor)\n\n // 绑定事件,如点击链接时,可以查看链接\n bindEvent(editor)\n }\n\n /**\n * 插入行内代码\n * @param text\n * @return null\n */\n private insertLineCode(text: string) {\n let editor = this.editor\n // 行内代码处理\n let $code = $(`<code>${text}</code>`)\n editor.cmd.do('insertElem', $code)\n editor.selection.createRangeByElem($code, false)\n editor.selection.restoreSelection()\n }\n\n /**\n * 菜单点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n const selectionText = editor.selection.getSelectionText()\n\n if (this.isActive) {\n return\n } else {\n // 菜单未被激活,说明选区不在链接里\n if (editor.selection.isSelectionEmpty()) {\n // 选区是空的,未选中内容\n this.createPanel('', '')\n } else {\n // 行内代码处理 选中了非代码内容\n this.insertLineCode(selectionText)\n }\n }\n }\n\n /**\n * 创建 panel\n * @param text 代码文本\n * @param languageType 代码类型\n */\n public createPanel(text: string, languageType: string): void {\n const conf = createPanelConf(this.editor, text, languageType)\n const panel = new Panel(this, conf)\n panel.create()\n }\n\n /**\n * 尝试修改菜单 active 状态\n */\n public tryChangeActive() {\n const editor = this.editor\n if (isActive(editor)) {\n this.active()\n } else {\n this.unActive()\n }\n }\n}\n\nexport default Code\n","/**\n * @description code 菜单 panel tab 配置\n * @author lkw\n */\n\nimport Editor from '../../editor/index'\nimport { PanelConf } from '../menu-constructors/Panel'\nimport { getRandom } from '../../utils/util'\nimport $, { DomElement } from '../../utils/dom-core'\nimport isActive from './is-active'\nimport { EMPTY_P } from '../../utils/const'\n\nexport default function (editor: Editor, text: string, languageType: string): PanelConf {\n // panel 中需要用到的id\n const inputIFrameId = getRandom('input-iframe')\n const languageId = getRandom('select')\n const btnOkId = getRandom('btn-ok')\n\n /**\n * 插入代码块\n * @param text 文字\n */\n function insertCode(text: string): void {\n // 选区处于链接中,则选中整个菜单,再执行 insertHTML\n let active = isActive(editor)\n\n if (active) {\n selectCodeElem()\n }\n\n const content = editor.selection.getSelectionStartElem()?.elems[0].innerHTML\n if (content) {\n editor.cmd.do('insertHTML', EMPTY_P)\n }\n editor.cmd.do('insertHTML', text)\n\n const $code = editor.selection.getSelectionStartElem()\n const $codeElem = $code?.getNodeTop(editor)\n\n // 通过dom操作添加换行标签\n if ($codeElem?.getNextSibling().elems.length === 0) {\n // @ts-ignore\n $(EMPTY_P).insertAfter($codeElem)\n }\n }\n\n /**\n * 选中整个链接元素\n */\n function selectCodeElem(): void {\n if (!isActive(editor)) return\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let $selectedCode: DomElement\n\n const $code = editor.selection.getSelectionStartElem()\n const $codeElem = $code?.getNodeTop(editor)\n if (!$codeElem) return\n\n editor.selection.createRangeByElem($codeElem)\n editor.selection.restoreSelection()\n\n $selectedCode = $codeElem // 赋值给函数内全局变量\n }\n\n const t = (text: string): string => {\n return editor.i18next.t(text)\n }\n\n // @ts-ignore\n const conf = {\n width: 500,\n height: 0,\n\n // panel 中可包含多个 tab\n tabs: [\n {\n // tab 的标题\n title: t('menus.panelMenus.code.插入代码'),\n // 模板\n tpl: `<div>\n <select name=\"\" id=\"${languageId}\">\n ${editor.config.languageType.map(language => {\n return (\n '<option ' +\n (languageType == language ? 'selected' : '') +\n ' value =\"' +\n language +\n '\">' +\n language +\n '</option>'\n )\n })}\n </select>\n <textarea id=\"${inputIFrameId}\" type=\"text\" class=\"wang-code-textarea\" placeholder=\"\" style=\"height: 160px\">${text.replace(\n /&quot;/g,\n '\"'\n )}</textarea>\n <div class=\"w-e-button-container\">\n <button type=\"button\" id=\"${btnOkId}\" class=\"right\">${\n isActive(editor) ? t('修改') : t('插入')\n }</button>\n </div>\n </div>`,\n // 事件绑定\n events: [\n // 插入链接\n {\n selector: '#' + btnOkId,\n type: 'click',\n fn: () => {\n let formatCode, codeDom\n\n const $code = document.getElementById(inputIFrameId)\n const $select = $('#' + languageId)\n\n let languageType = $select.val()\n // @ts-ignore\n let code = $code.value\n\n // 高亮渲染\n if (editor.highlight) {\n formatCode = editor.highlight.highlightAuto(code).value\n } else {\n formatCode = `<xmp>${code}</xmp>`\n }\n\n // 代码为空,则不插入\n if (!code) return\n\n //增加标签\n if (isActive(editor)) {\n return false\n } else {\n //增加pre标签\n codeDom = `<pre><code class=\"${languageType}\">${formatCode}</code></pre>`\n\n // @ts-ignore\n insertCode(codeDom)\n }\n\n // 返回 true表示该事件执行完之后panel 要关闭。否则 panel 不会关闭\n return true\n },\n },\n ],\n }, // tab end\n ], // tabs end\n }\n\n return conf\n}\n","/**\n * @description 绑定链接元素的事件,入口\n * @author lkw\n */\n\nimport Editor from '../../../editor/index'\nimport bindTooltipEvent from './tooltip-event'\nimport bindEventJumpCodeBlock from './jump-code-block-down'\n\n/**\n * 绑定事件\n * @param editor 编辑器实例\n */\nfunction bindEvent(editor: Editor) {\n // tooltip 事件\n bindTooltipEvent(editor)\n\n // 代码块为最后内容的跳出处理\n bindEventJumpCodeBlock(editor)\n}\n\nexport default bindEvent\n","/**\n * @description tooltip 事件\n * @author lkw\n */\n\nimport $, { DomElement } from '../../../utils/dom-core'\nimport Tooltip from '../../menu-constructors/Tooltip'\nimport Editor from '../../../editor/index'\n\n/**\n * 生成 Tooltip 的显示隐藏函数\n */\nexport function createShowHideFn(editor: Editor) {\n let tooltip: Tooltip | null\n\n /**\n * 显示 tooltip\n * @param $code 链接元素\n */\n function showCodeTooltip($code: DomElement) {\n const i18nPrefix = 'menus.panelMenus.code.'\n const t = (text: string, prefix: string = i18nPrefix): string => {\n return editor.i18next.t(prefix + text)\n }\n\n const conf = [\n {\n $elem: $(`<span>${t('删除代码')}</span>`),\n onClick: (editor: Editor, $code: DomElement) => {\n //dom操作删除\n $code.remove()\n\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n ]\n\n // 创建 tooltip\n tooltip = new Tooltip(editor, $code, conf)\n tooltip.create()\n }\n\n /**\n * 隐藏 tooltip\n */\n function hideCodeTooltip() {\n // 移除 tooltip\n if (tooltip) {\n tooltip.remove()\n tooltip = null\n }\n }\n\n return {\n showCodeTooltip,\n hideCodeTooltip,\n }\n}\n\n/**\n * preEnterListener是为了统一浏览器 在pre标签内的enter行为而进行的监听\n * 目前并没有使用, 但是在未来处理与Firefox和ie的兼容性时需要用到 暂且放置\n * pre标签内的回车监听\n * @param e\n * @param editor\n */\n/* istanbul ignore next */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction preEnterListener(e: KeyboardEvent, editor: Editor) {\n // 获取当前标签元素\n const $selectionElem = editor.selection.getSelectionContainerElem() as DomElement\n\n // 获取当前节点最顶级标签元素\n const $topElem = $selectionElem?.getNodeTop(editor)\n\n // 获取顶级节点节点名\n const topNodeName = $topElem?.getNodeName()\n\n // 非pre标签退出\n if (topNodeName !== 'PRE') return\n\n // 取消默认行为\n e.preventDefault()\n\n // 执行换行\n editor.cmd.do('insertHTML', '\\n\\r')\n}\n\n/**\n * 绑定 tooltip 事件\n * @param editor 编辑器实例\n */\nexport default function bindTooltipEvent(editor: Editor) {\n const { showCodeTooltip, hideCodeTooltip } = createShowHideFn(editor)\n\n // 点击代码元素时,显示 tooltip\n editor.txt.eventHooks.codeClickEvents.push(showCodeTooltip)\n\n // 点击其他地方,或者滚动时,隐藏 tooltip\n editor.txt.eventHooks.clickEvents.push(hideCodeTooltip)\n editor.txt.eventHooks.toolbarClickEvents.push(hideCodeTooltip)\n editor.txt.eventHooks.menuClickEvents.push(hideCodeTooltip)\n editor.txt.eventHooks.textScrollEvents.push(hideCodeTooltip)\n}\n","/**\n * @description 代码块为最后一块内容时往下跳出代码块\n * @author zhengwenjian\n */\nimport { EMPTY_P } from '../../../utils/const'\nimport Editor from '../../../editor/index'\nimport $ from '../../../utils/dom-core'\n\n/**\n * 在代码块最后一行 按方向下键跳出代码块的处理\n * @param editor 编辑器实例\n */\nexport default function bindEventJumpCodeBlock(editor: Editor) {\n const { $textElem, selection, txt } = editor\n const { keydownEvents } = txt.eventHooks\n\n keydownEvents.push(function (e) {\n // 40 是键盘中的下方向键\n if (e.keyCode !== 40) return\n const node = selection.getSelectionContainerElem()\n const $lastNode = $textElem.children()?.last()\n if (node?.elems[0].tagName === 'XMP' && $lastNode?.elems[0].tagName === 'PRE') {\n // 就是最后一块是代码块的情况插入空p标签并光标移至p\n const $emptyP = $(EMPTY_P)\n $textElem.append($emptyP)\n }\n })\n // fix: 修复代码块作为最后一个元素时,用户无法再进行输入的问题\n keydownEvents.push(function (e) {\n // 实时保存选区\n editor.selection.saveRange()\n const $selectionContainerElem = selection.getSelectionContainerElem()\n if ($selectionContainerElem) {\n const $topElem = $selectionContainerElem.getNodeTop(editor)\n // 获取选区所在节点的上一元素\n const $preElem = $topElem?.prev()\n // 判断该元素后面是否还存在元素\n // 如果存在则允许删除\n const $nextElem = $topElem?.getNextSibling()\n\n if ($preElem.length && $preElem?.getNodeName() === 'PRE' && $nextElem.length === 0) {\n // 光标处于选区开头\n if (selection.getCursorPos() === 0) {\n // 按下delete键时末尾追加空行\n if (e.keyCode === 8) {\n const $emptyP = $(EMPTY_P)\n $textElem.append($emptyP)\n }\n }\n }\n }\n })\n}\n","/**\n * @description 分割线\n * @author wangqiaoling\n */\nimport BtnMenu from '../menu-constructors/BtnMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport bindEvent from './bind-event/index'\nimport { UA } from '../../utils/util'\nimport { EMPTY_P } from '../../utils/const'\nclass splitLine extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n '<div class=\"w-e-menu\" data-title=\"分割线\"><i class=\"w-e-icon-split-line\"></i></div>'\n )\n super($elem, editor)\n // 绑定事件\n bindEvent(editor)\n }\n /**\n * 菜单点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n const range = editor.selection.getRange()\n\n const $selectionElem = editor.selection.getSelectionContainerElem()\n if (!$selectionElem?.length) return\n\n const $DomElement = $($selectionElem.elems[0])\n const $tableDOM = $DomElement.parentUntil('TABLE', $selectionElem.elems[0])\n const $imgDOM = $DomElement.children()\n\n // 禁止在代码块中添加分割线\n if ($DomElement.getNodeName() === 'CODE') return\n // 禁止在表格中添加分割线\n if ($tableDOM && $($tableDOM.elems[0]).getNodeName() === 'TABLE') return\n\n // 禁止在图片处添加分割线\n if (\n $imgDOM &&\n $imgDOM.length !== 0 &&\n $($imgDOM.elems[0]).getNodeName() === 'IMG' &&\n !range?.collapsed // 处理光标在 img 后面的情况\n ) {\n return\n }\n\n this.createSplitLine()\n }\n /**\n * 创建 splitLine\n */\n private createSplitLine(): void {\n // 防止插入分割线时没有占位元素的尴尬\n let splitLineDOM: string = `<hr/>${EMPTY_P}`\n // 火狐浏览器不需要br标签占位\n if (UA.isFirefox) {\n splitLineDOM = '<hr/><p></p>'\n }\n this.editor.cmd.do('insertHTML', splitLineDOM)\n }\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {}\n}\nexport default splitLine\n","/**\n * @description 绑定分割线元素的事件入口\n * @author wangqiaoling\n */\nimport Editor from '../../../editor/index'\nimport bindTooltipEvent from './tooltip-event'\n/**\n * 绑定事件\n * @param editor 编辑器实例\n */\nfunction bindEvent(editor: Editor) {\n // 分割线的 tooltip 事件\n bindTooltipEvent(editor)\n}\n\nexport default bindEvent\n","/**\n * @description tooltip 事件\n * @author wangqiaoling\n */\nimport $, { DomElement } from '../../../utils/dom-core'\nimport Tooltip, { TooltipConfType } from '../../menu-constructors/Tooltip'\nimport Editor from '../../../editor/index'\n\n/**\n * 生成 Tooltip 的显示隐藏函数\n */\nfunction createShowHideFn(editor: Editor) {\n let tooltip: Tooltip | null\n\n /**\n * 显示分割线的 tooltip\n * @param $splitLine 分割线元素\n */\n function showSplitLineTooltip($splitLine: DomElement): void {\n // 定义 splitLine tooltip 配置\n const conf: TooltipConfType = [\n {\n $elem: $(`<span>${editor.i18next.t('menus.panelMenus.删除')}</span>`),\n onClick: (editor: Editor, $splitLine: DomElement) => {\n // 选中 分割线 元素\n editor.selection.createRangeByElem($splitLine)\n editor.selection.restoreSelection()\n editor.cmd.do('delete')\n\n // 返回 true表示执行完之后隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n ]\n // 实例化 tooltip\n tooltip = new Tooltip(editor, $splitLine, conf)\n // 创建 tooltip\n tooltip.create()\n }\n\n /**\n * 隐藏分割线的 tooltip\n */\n function hideSplitLineTooltip(): void {\n if (tooltip) {\n tooltip.remove()\n tooltip = null\n }\n }\n\n return {\n showSplitLineTooltip,\n hideSplitLineTooltip,\n }\n}\n\nexport default function bindTooltipEvent(editor: Editor): void {\n const { showSplitLineTooltip, hideSplitLineTooltip } = createShowHideFn(editor)\n\n // 点击分割线时,显示 tooltip\n editor.txt.eventHooks.splitLineEvents.push(showSplitLineTooltip)\n\n // 点击其他地方工具栏、滚动、keyup隐藏 tooltip\n editor.txt.eventHooks.clickEvents.push(hideSplitLineTooltip)\n editor.txt.eventHooks.keyupEvents.push(hideSplitLineTooltip)\n editor.txt.eventHooks.toolbarClickEvents.push(hideSplitLineTooltip)\n editor.txt.eventHooks.menuClickEvents.push(hideSplitLineTooltip)\n editor.txt.eventHooks.textScrollEvents.push(hideSplitLineTooltip)\n}\n","import $, { DomElement } from '../../utils/dom-core'\nimport BtnMenu from '../menu-constructors/BtnMenu'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport { isAllTodo } from './util'\nimport bindEvent from './bind-event'\nimport createTodo from './todo'\n\nclass Todo extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"待办事项\">\n <i class=\"w-e-icon-checkbox-checked\"></i>\n </div>`\n )\n super($elem, editor)\n bindEvent(editor)\n }\n\n /**\n * 点击事件\n */\n public clickHandler(): void {\n const editor = this.editor\n if (!isAllTodo(editor)) {\n // 设置todolist\n this.setTodo()\n } else {\n // 取消设置todolist\n this.cancelTodo()\n this.tryChangeActive()\n }\n }\n tryChangeActive() {\n if (isAllTodo(this.editor)) {\n this.active()\n } else {\n this.unActive()\n }\n }\n\n /**\n * 设置todo\n */\n private setTodo() {\n const editor = this.editor\n const topNodeElem: DomElement[] = editor.selection.getSelectionRangeTopNodes()\n topNodeElem.forEach($node => {\n const nodeName = $node?.getNodeName()\n if (nodeName === 'P') {\n const todo = createTodo($node)\n const todoNode = todo.getTodo()\n const child = todoNode.children()?.getNode() as Node\n todoNode.insertAfter($node)\n editor.selection.moveCursor(child)\n $node.remove()\n }\n })\n this.tryChangeActive()\n }\n\n /**\n * 取消设置todo\n */\n private cancelTodo() {\n const editor = this.editor\n const $topNodeElems: DomElement[] = editor.selection.getSelectionRangeTopNodes()\n\n $topNodeElems.forEach($topNodeElem => {\n let content = $topNodeElem.childNodes()?.childNodes()?.clone(true) as DomElement\n const $p = $(`<p></p>`)\n $p.append(content)\n $p.insertAfter($topNodeElem)\n // 移除input\n $p.childNodes()?.get(0).remove()\n editor.selection.moveCursor($p.getNode())\n $topNodeElem.remove()\n })\n }\n}\n\nexport default Todo\n","module.exports = require(\"core-js-pure/stable/instance/every\");","var parent = require('../../es/instance/every');\n\nmodule.exports = parent;\n","var every = require('../array/virtual/every');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.every;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.every) ? every : own;\n};\n","require('../../../modules/es.array.every');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').every;\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","import Editor from '../../../editor/index'\nimport $ from '../../../utils/dom-core'\nimport { getCursorNextNode, isAllTodo } from '../util'\nimport createTodo from '../todo'\nimport { dealTextNode, isTodo } from '../util'\nimport { EMPTY_P } from '../../../utils/const'\n\n/**\n * todolist 内部逻辑\n * @param editor\n */\nfunction bindEvent(editor: Editor) {\n /**\n * todo的自定义回车事件\n * @param e 事件属性\n */\n function todoEnter(e: Event) {\n // 判断是否为todo节点\n if (isAllTodo(editor)) {\n e.preventDefault()\n const selection = editor.selection\n const $topSelectElem = selection.getSelectionRangeTopNodes()[0]\n const $li = $topSelectElem.childNodes()?.get(0)\n const selectionNode = window.getSelection()?.anchorNode as Node\n const range = selection.getRange()\n\n if (!range?.collapsed) {\n const rangeChildNodes = range?.commonAncestorContainer.childNodes\n const startContainer = range?.startContainer as Node\n const endContainer = range?.endContainer as Node\n const startPos = range?.startOffset as number\n const endPos = range?.endOffset as number\n let startElemIndex: number = 0\n let endElemIndex: number = 0\n let delList: ChildNode[] = []\n // 找出startContainer和endContainer在rangeChildNodes中的位置\n rangeChildNodes?.forEach((v, i) => {\n if (v.contains(startContainer)) startElemIndex = i\n if (v.contains(endContainer)) endElemIndex = i\n })\n // 删除两个容器间的内容\n if (endElemIndex - startElemIndex > 1) {\n rangeChildNodes?.forEach((v, i) => {\n if (i <= startElemIndex) return\n if (i >= endElemIndex) return\n delList.push(v)\n })\n delList.forEach(v => {\n v.remove()\n })\n }\n // 删除两个容器里拖蓝的内容\n dealTextNode(startContainer, startPos)\n dealTextNode(endContainer, endPos, false)\n editor.selection.moveCursor(endContainer, 0)\n }\n\n // 回车时内容为空时,删去此行\n if ($topSelectElem.text() === '') {\n const $p = $(EMPTY_P)\n $p.insertAfter($topSelectElem)\n selection.moveCursor($p.getNode())\n $topSelectElem.remove()\n return\n }\n\n const pos = selection.getCursorPos() as number\n const CursorNextNode = getCursorNextNode($li?.getNode() as Node, selectionNode, pos)\n const todo = createTodo($(CursorNextNode))\n const $inputcontainer = todo.getInputContainer()\n const todoLiElem = $inputcontainer.parent().getNode()\n const $newTodo = todo.getTodo()\n const contentSection = $inputcontainer.getNode().nextSibling\n // 处理光标在最前面时回车input不显示的问题\n if ($li?.text() === '') {\n $li?.append($(`<br>`))\n }\n $newTodo.insertAfter($topSelectElem)\n // 处理在google中光标在最后面的input不显示的问题(必须插入之后移动光标)\n if (!contentSection || contentSection?.textContent === '') {\n // 防止多个br出现的情况\n if (contentSection?.nodeName !== 'BR') {\n const $br = $(`<br>`)\n $br.insertAfter($inputcontainer)\n }\n selection.moveCursor(todoLiElem, 1)\n } else {\n selection.moveCursor(todoLiElem)\n }\n }\n }\n\n /**\n * 自定义删除事件用来处理光标在最前面删除input产生的问题\n */\n function delDown(e: Event) {\n if (isAllTodo(editor)) {\n const selection = editor.selection\n const $topSelectElem = selection.getSelectionRangeTopNodes()[0]\n const $li = $topSelectElem.childNodes()?.getNode()\n const $p = $(`<p></p>`)\n const p = $p.getNode()\n const selectionNode = window.getSelection()?.anchorNode as Node\n const pos = selection.getCursorPos()\n const prevNode = selectionNode.previousSibling\n\n // 处理内容为空的情况\n if ($topSelectElem.text() === '') {\n e.preventDefault()\n const $newP = $(EMPTY_P)\n $newP.insertAfter($topSelectElem)\n $topSelectElem.remove()\n selection.moveCursor($newP.getNode(), 0)\n return\n }\n\n // 处理有内容时,光标在最前面的情况\n if (\n prevNode?.nodeName === 'SPAN' &&\n prevNode.childNodes[0].nodeName === 'INPUT' &&\n pos === 0\n ) {\n e.preventDefault()\n $li?.childNodes.forEach((v, index) => {\n if (index === 0) return\n p.appendChild(v.cloneNode(true))\n })\n $p.insertAfter($topSelectElem)\n\n $topSelectElem.remove()\n }\n }\n }\n\n /**\n * 自定义删除键up事件\n */\n function deleteUp() {\n const selection = editor.selection\n const $topSelectElem = selection.getSelectionRangeTopNodes()[0]\n if ($topSelectElem && isTodo($topSelectElem)) {\n if ($topSelectElem.text() === '') {\n $(EMPTY_P).insertAfter($topSelectElem)\n $topSelectElem.remove()\n }\n }\n }\n\n /**\n * input 的点击事件( input 默认不会产生 attribute 的改变 \n * @param e 事件属性\n */\n function inputClick(e?: Event): void {\n if (e && e.target instanceof HTMLInputElement) {\n if (e.target.type === 'checkbox') {\n if (e.target.checked) {\n e.target.setAttribute('checked', 'true')\n } else {\n e.target.removeAttribute('checked')\n }\n }\n }\n }\n\n editor.txt.eventHooks.enterDownEvents.push(todoEnter)\n editor.txt.eventHooks.deleteUpEvents.push(deleteUp)\n editor.txt.eventHooks.deleteDownEvents.push(delDown)\n editor.txt.eventHooks.clickEvents.push(inputClick)\n}\n\nexport default bindEvent\n","/**\n * @description 初始化编辑器 DOM 结构\n * @author wangfupeng\n */\n\nimport Editor from '../index'\nimport $, { DomElement } from '../../utils/dom-core'\nimport { getRandom } from '../../utils/util'\nimport { EMPTY_P } from '../../utils/const'\nimport CONFIG from '../../config/text'\nconst styleSettings = {\n border: '1px solid #c9d8db',\n toolbarBgColor: '#FFF',\n toolbarBottomBorder: '1px solid #EEE',\n}\n\nexport default function (editor: Editor): void {\n const toolbarSelector = editor.toolbarSelector\n const $toolbarSelector = $(toolbarSelector)\n const textSelector = editor.textSelector\n\n const config = editor.config\n const height = config.height\n const i18next = editor.i18next\n\n const $toolbarElem: DomElement = $('<div></div>')\n const $textContainerElem: DomElement = $('<div></div>')\n let $textElem: DomElement\n let $children: DomElement | null\n let $subChildren: DomElement | null = null\n\n if (textSelector == null) {\n // 将编辑器区域原有的内容,暂存起来\n $children = $toolbarSelector.children()\n\n // 添加到 DOM 结构中\n $toolbarSelector.append($toolbarElem).append($textContainerElem)\n\n // 自行创建的,需要配置默认的样式\n $toolbarElem\n .css('background-color', styleSettings.toolbarBgColor)\n .css('border', styleSettings.border)\n .css('border-bottom', styleSettings.toolbarBottomBorder)\n $textContainerElem\n .css('border', styleSettings.border)\n .css('border-top', 'none')\n .css('height', `${height}px`)\n } else {\n // toolbarSelector 和 textSelector 都有\n $toolbarSelector.append($toolbarElem)\n // 菜单分离后,文本区域内容暂存\n $subChildren = $(textSelector).children()\n $(textSelector).append($textContainerElem)\n // 将编辑器区域原有的内容,暂存起来\n $children = $textContainerElem.children()\n }\n\n // 编辑区域\n $textElem = $('<div></div>')\n $textElem.attr('contenteditable', 'true').css('width', '100%').css('height', '100%')\n\n // 添加 placeholder\n let $placeholder: DomElement\n const placeholder = editor.config.placeholder\n if (placeholder !== CONFIG.placeholder) {\n $placeholder = $(`<div>${placeholder}</div>`)\n } else {\n $placeholder = $(`<div>${i18next.t(placeholder)}</div>`)\n }\n $placeholder.addClass('placeholder')\n\n // 初始化编辑区域内容\n if ($children && $children.length) {\n $textElem.append($children)\n // 编辑器有默认值的时候隐藏placeholder\n $placeholder.hide()\n } else {\n $textElem.append($(EMPTY_P)) // 新增一行,方便继续编辑\n }\n\n // 菜单分离后,文本区域有标签的带入编辑器内\n if ($subChildren && $subChildren.length) {\n $textElem.append($subChildren)\n // 编辑器有默认值的时候隐藏placeholder\n $placeholder.hide()\n }\n\n // 编辑区域加入DOM\n $textContainerElem.append($textElem)\n\n // 添加placeholder\n $textContainerElem.append($placeholder)\n\n // 设置通用的 class\n $toolbarElem.addClass('w-e-toolbar').css('z-index', editor.zIndex.get('toolbar'))\n $textContainerElem.addClass('w-e-text-container')\n $textContainerElem.css('z-index', editor.zIndex.get())\n $textElem.addClass('w-e-text')\n\n // 添加 ID\n const toolbarElemId = getRandom('toolbar-elem')\n $toolbarElem.attr('id', toolbarElemId)\n const textElemId = getRandom('text-elem')\n $textElem.attr('id', textElemId)\n\n // 判断编辑区与容器高度是否一致\n const textContainerCliheight = $textContainerElem.getBoundingClientRect().height\n const textElemClientHeight = $textElem.getBoundingClientRect().height\n if (textContainerCliheight !== textElemClientHeight) {\n $textElem.css('min-height', textContainerCliheight + 'px')\n }\n\n // 记录属性\n editor.$toolbarElem = $toolbarElem\n editor.$textContainerElem = $textContainerElem\n editor.$textElem = $textElem\n editor.toolbarElemId = toolbarElemId\n editor.textElemId = textElemId\n}\n\n/**\n * 工具栏/文本区域 DOM selector 有效性验证\n * @param editor 编辑器实例\n */\nexport function selectorValidator(editor: Editor) {\n const name = 'data-we-id'\n const regexp = /^wangEditor-\\d+$/\n const { textSelector, toolbarSelector } = editor\n\n const $el = {\n bar: $('<div></div>'),\n text: $('<div></div>'),\n }\n\n if (toolbarSelector == null) {\n throw new Error('错误:初始化编辑器时候未传入任何参数,请查阅文档')\n } else {\n $el.bar = $(toolbarSelector)\n if (!$el.bar.elems.length) {\n throw new Error(`无效的节点选择器:${toolbarSelector}`)\n }\n if (regexp.test($el.bar.attr(name))) {\n throw new Error('初始化节点已存在编辑器实例,无法重复创建编辑器')\n }\n }\n if (textSelector) {\n $el.text = $(textSelector)\n if (!$el.text.elems.length) {\n throw new Error(`无效的节点选择器:${textSelector}`)\n }\n if (regexp.test($el.text.attr(name))) {\n throw new Error('初始化节点已存在编辑器实例,无法重复创建编辑器')\n }\n }\n\n // 给节点做上标记\n $el.bar.attr(name, editor.id)\n $el.text.attr(name, editor.id)\n\n // 在编辑器销毁前取消标记\n editor.beforeDestroy(function () {\n $el.bar.removeAttr(name)\n $el.text.removeAttr(name)\n })\n}\n","/**\n * @description 初始化编辑器选区,将光标定位到文档末尾\n * @author wangfupeng\n */\n\nimport Editor from '../index'\nimport $ from '../../utils/dom-core'\nimport { EMPTY_P } from '../../utils/const'\n\n/**\n * 初始化编辑器选区,将光标定位到文档末尾\n * @param editor 编辑器实例\n * @param newLine 是否新增一行\n */\nfunction initSelection(editor: Editor, newLine?: boolean) {\n const $textElem = editor.$textElem\n const $children = $textElem.children()\n if (!$children || !$children.length) {\n // 如果编辑器区域无内容,添加一个空行,重新设置选区\n $textElem.append($(EMPTY_P))\n initSelection(editor)\n return\n }\n\n const $last = $children.last()\n\n if (newLine) {\n // 新增一个空行\n const html = $last.html().toLowerCase()\n const nodeName = $last.getNodeName()\n if ((html !== '<br>' && html !== '<br/>') || nodeName !== 'P') {\n // 最后一个元素不是 空标签,添加一个空行,重新设置选区\n $textElem.append($(EMPTY_P))\n initSelection(editor)\n return\n }\n }\n\n editor.selection.createRangeByElem($last, false, true)\n if (editor.config.focus) {\n editor.selection.restoreSelection()\n } else {\n // 防止focus=false受其他因素影响\n editor.selection.clearWindowSelectionRange()\n }\n}\n\nexport default initSelection\n","/**\n * @description 绑定编辑器事件 change blur focus\n * @author wangfupeng\n */\n\nimport Editor from '../index'\nimport $ from '../../utils/dom-core'\n\nfunction bindEvent(editor: Editor): void {\n // 绑定 change 事件\n _bindChange(editor)\n\n // 绑定 focus blur 事件\n _bindFocusAndBlur(editor)\n\n // 绑定 input 输入\n _bindInput(editor)\n}\n\n/**\n * 绑定 change 事件\n * @param editor 编辑器实例\n */\nfunction _bindChange(editor: Editor): void {\n editor.txt.eventHooks.changeEvents.push(function () {\n const { onchange } = editor.config\n if (onchange) {\n const html = editor.txt.html() || ''\n // onchange触发时是focus状态详见https://github.com/wangeditor-team/wangEditor/issues/3034\n editor.isFocus = true\n onchange(html)\n }\n\n editor.txt.togglePlaceholder()\n })\n}\n\n/**\n * 绑定 focus blur 事件\n * @param editor 编辑器实例\n */\nfunction _bindFocusAndBlur(editor: Editor): void {\n // 当前编辑器是否是焦点状态\n editor.isFocus = false\n\n function listener(e: Event) {\n const target = e.target\n const $target = $(target)\n const $textElem = editor.$textElem\n const $toolbarElem = editor.$toolbarElem\n\n //判断当前点击元素是否在编辑器内\n const isChild = $textElem.isContain($target)\n\n //判断当前点击元素是否为工具栏\n const isToolbar = $toolbarElem.isContain($target)\n const isMenu = $toolbarElem.elems[0] == e.target ? true : false\n\n if (!isChild) {\n // 若为选择工具栏中的功能,则不视为成 blur 操作\n if ((isToolbar && !isMenu) || !editor.isFocus) {\n return\n }\n _blurHandler(editor)\n editor.isFocus = false\n } else {\n if (!editor.isFocus) {\n _focusHandler(editor)\n }\n\n editor.isFocus = true\n }\n }\n // fix: 增加判断条件防止当用户设置isFocus=false时初始化完成后点击其他元素依旧会触发blur事件的问题\n if (document.activeElement === editor.$textElem.elems[0] && editor.config.focus) {\n _focusHandler(editor)\n editor.isFocus = true\n }\n // 绑定监听事件\n $(document).on('click', listener)\n // 全局事件在编辑器实例销毁的时候进行解绑\n editor.beforeDestroy(function () {\n $(document).off('click', listener)\n })\n}\n\n/**\n * 绑定 input 事件\n * @param editor 编辑器实例\n */\nfunction _bindInput(editor: Editor) {\n // 绑定中文输入\n editor.$textElem\n .on('compositionstart', () => {\n editor.isComposing = true\n editor.txt.togglePlaceholder()\n })\n .on('compositionend', () => {\n editor.isComposing = false\n editor.txt.togglePlaceholder()\n })\n}\n\n/**\n * blur 事件\n * @param editor 编辑器实例\n */\nfunction _blurHandler(editor: Editor) {\n const config = editor.config\n const onblur = config.onblur\n const currentHtml = editor.txt.html() || ''\n editor.txt.eventHooks.onBlurEvents.forEach(fn => fn())\n onblur(currentHtml)\n}\n\n/**\n * focus 事件\n * @param editor 编辑器实例\n */\nfunction _focusHandler(editor: Editor) {\n const config = editor.config\n const onfocus = config.onfocus\n const currentHtml = editor.txt.html() || ''\n onfocus(currentHtml)\n}\n\nexport default bindEvent\n","/**\n * @description 国际化 初始化\n * @author tonghan\n * i18next 是使用 JavaScript 编写的国际化框架\n * i18next 提供了标准的i18n功能例如复数上下文插值格式等\n * i18next 文档地址: https://www.i18next.com/overview/getting-started\n */\n\nimport Editor from '../index'\n\nfunction i18nextInit(editor: Editor) {\n const { lang, languages } = editor.config\n\n if (editor.i18next != null) {\n try {\n editor.i18next.init({\n ns: 'wangEditor',\n lng: lang,\n defaultNS: 'wangEditor',\n resources: languages,\n })\n } catch (error) {\n throw new Error('i18next:' + error)\n }\n return\n }\n\n // 没有引入 i18next 的替代品\n editor.i18next = {\n t(str: string) {\n const strArr = str.split('.')\n return strArr[strArr.length - 1]\n },\n }\n}\n\nexport default i18nextInit\n","/**\n * @description 全屏功能\n * @author xiaokyo\n */\n\nimport Editor from '../index'\nimport $ from '../../utils/dom-core'\n\nimport '../../assets/style/full-screen.less'\n\nconst iconFullScreenText = 'w-e-icon-fullscreen' // 全屏icon class\nconst iconExitFullScreenText = 'w-e-icon-fullscreen_exit' // 退出全屏icon class\nconst classfullScreenEditor = 'w-e-full-screen-editor' // 全屏添加至编辑器的class\n\n/**\n * 设置全屏\n * @param editor 编辑器实例\n */\nexport const setFullScreen = (editor: Editor) => {\n const $editorParent = $(editor.toolbarSelector)\n const $textContainerElem = editor.$textContainerElem\n const $toolbarElem = editor.$toolbarElem\n const $iconElem = $toolbarElem.find(`i.${iconFullScreenText}`)\n const config = editor.config\n\n $iconElem.removeClass(iconFullScreenText)\n $iconElem.addClass(iconExitFullScreenText)\n $editorParent.addClass(classfullScreenEditor)\n $editorParent.css('z-index', config.zIndexFullScreen)\n const bar = $toolbarElem.getBoundingClientRect()\n $textContainerElem.css('height', `calc(100% - ${bar.height}px)`)\n}\n\n/**\n * 取消全屏\n * @param editor 编辑器实例\n */\nexport const setUnFullScreen = (editor: Editor) => {\n const $editorParent = $(editor.toolbarSelector)\n const $textContainerElem = editor.$textContainerElem\n const $toolbarElem = editor.$toolbarElem\n const $iconElem = $toolbarElem.find(`i.${iconExitFullScreenText}`)\n const config = editor.config\n\n $iconElem.removeClass(iconExitFullScreenText)\n $iconElem.addClass(iconFullScreenText)\n $editorParent.removeClass(classfullScreenEditor)\n $editorParent.css('z-index', 'auto')\n $textContainerElem.css('height', config.height + 'px')\n}\n\n/**\n * 初始化全屏功能\n * @param editor 编辑器实例\n */\nconst initFullScreen = (editor: Editor) => {\n // 当textSelector有值的时候也就是编辑器是工具栏和编辑区域分离的情况 则不生成全屏功能按钮\n if (editor.textSelector) return\n if (!editor.config.showFullScreen) return\n const $toolbarElem = editor.$toolbarElem\n const $elem = $(\n `<div class=\"w-e-menu\" data-title=\"全屏\">\n <i class=\"${iconFullScreenText}\"></i>\n </div>`\n )\n $elem.on('click', function (e: MouseEvent) {\n const $elemIcon = $(e.currentTarget).find('i')\n if ($elemIcon.hasClass(iconFullScreenText)) {\n $elem.attr('data-title', '取消全屏')\n setFullScreen(editor)\n } else {\n $elem.attr('data-title', '全屏')\n setUnFullScreen(editor)\n }\n })\n\n $toolbarElem.append($elem)\n}\n\nexport default initFullScreen\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./full-screen.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-full-screen-editor {\\n position: fixed;\\n width: 100%!important;\\n height: 100%!important;\\n left: 0;\\n top: 0;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * @description 滚动到指定锚点\n * @author zhengwenjian\n */\n\nimport Editor from '../index'\n\n/**\n * 编辑器滚动到指定锚点\n * @param editor 编辑器实例\n * @param id 标题锚点id\n */\nconst scrollToHead = (editor: Editor, id: string) => {\n const $textElem = editor.isEnable\n ? editor.$textElem\n : editor.$textContainerElem.find('.w-e-content-mantle')\n const $targetHead = $textElem.find(`[id='${id}']`)\n const targetTop = $targetHead.getOffsetData().top\n $textElem.scrollTop(targetTop)\n}\n\nexport default scrollToHead\n","/**\n * @description z-index 管理器\n * @author fangzhicong\n */\nimport Editor from '../index'\nimport style from '../../config/style'\n\nconst tier = {\n menu: 2, // 显示状态下的菜单栏\n panel: 2,\n toolbar: 1, // 菜单栏父容器\n tooltip: 1, // tooltip\n textContainer: 1, // 编辑区域\n}\n\ntype Tier = typeof tier\n\ntype TierKey = keyof Tier\nexport default class ZIndex {\n // 层级参数\n private tier: Tier = tier\n\n // 默认值\n private baseZIndex = style.zIndex\n\n // 获取 tierName 对应的 z-index 的值。如果 tierName 未定义则返回默认的 z-index 值\n get(tierName?: TierKey): number {\n if (tierName && this.tier[tierName]) {\n return this.baseZIndex + this.tier[tierName]\n }\n return this.baseZIndex\n }\n\n // 初始化\n init(editor: Editor) {\n if (this.baseZIndex == style.zIndex) {\n this.baseZIndex = editor.config.zIndex\n }\n }\n}\n","/**\n * @description 编辑器 change 事件\n * @author fangzhicong\n */\n\nimport Editor from '../index'\nimport Mutation from '../../utils/observer/mutation'\nimport { debounce } from '../../utils/util'\nimport { EMPTY_FN } from '../../utils/const'\n\n/**\n * 剔除编辑区容器的 attribute 变化中的非 contenteditable 变化\n * @param mutations MutationRecord[]\n * @param tar 编辑区容器的 DOM 节点\n */\nfunction mutationsFilter(mutations: MutationRecord[], tar: Node) {\n // 剔除编辑区容器的 attribute 变化中的非 contenteditable 变化\n return mutations.filter(({ type, target, attributeName }) => {\n return (\n type != 'attributes' ||\n (type == 'attributes' && (attributeName == 'contenteditable' || target != tar))\n )\n })\n}\n\n/**\n * Change 实现\n */\nexport default class Change extends Mutation {\n /**\n * 变化的数据集合\n */\n private data: MutationRecord[] = []\n\n /**\n * 异步保存数据\n */\n private asyncSave: Function = EMPTY_FN\n\n constructor(public editor: Editor) {\n super((mutations, observer) => {\n // 数据过滤\n mutations = mutationsFilter(mutations, observer.target as Node)\n\n // 存储数据\n this.data.push(...mutations)\n\n // 标准模式下\n if (!editor.isCompatibleMode) {\n // 在非中文输入状态下时才保存数据\n if (!editor.isComposing) {\n return this.asyncSave()\n }\n }\n // 兼容模式下\n else {\n this.asyncSave()\n }\n })\n }\n\n /**\n * 保存变化的数据并发布 change event\n */\n private save() {\n // 有数据\n if (this.data.length) {\n // 保存变化数据\n this.editor.history.save(this.data)\n\n // 清除缓存\n this.data.length = 0\n\n this.emit()\n }\n }\n\n /**\n * 发布 change event\n */\n public emit() {\n // 执行 onchange 回调\n this.editor.txt.eventHooks.changeEvents.forEach(fn => fn())\n }\n\n // 重写 observe\n public observe() {\n super.observe(this.editor.$textElem.elems[0])\n\n let timeout = this.editor.config.onchangeTimeout\n this.asyncSave = debounce(() => {\n this.save()\n }, timeout)\n\n if (!this.editor.isCompatibleMode) {\n this.editor.$textElem.on('compositionend', () => {\n this.asyncSave()\n })\n }\n }\n}\n","/**\n * @description 封装 MutationObserver\n * @author fangzhicong\n */\n\nexport type callback = (mutations: MutationRecord[], observer: Mutation) => void\n\n/**\n * 封装 MutationObserver抽离成公共类\n */\nexport default class Mutation {\n /**\n * MutationObserver 实例\n */\n protected observer: MutationObserver\n\n /**\n * 被监听的 Node 节点(可继承的,方便扩展但又不会在外部被修改)\n */\n protected node?: Node\n\n /**\n * 默认的 MutationObserverInit 配置\n */\n protected options: MutationObserverInit = {\n subtree: true,\n childList: true,\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n }\n\n /**\n * MutationCallback\n */\n protected callback: (mutations: MutationRecord[]) => void\n\n /**\n * 构造器\n * @param fn 发生变化时执行的回调函数\n * @param options 自定义配置项\n */\n constructor(fn: callback, options?: MutationObserverInit) {\n this.callback = mutations => {\n fn(mutations, this)\n }\n this.observer = new MutationObserver(this.callback)\n options && (this.options = options)\n }\n\n public get target() {\n return this.node\n }\n\n /**\n * 绑定监听节点(初次绑定有效)\n * @param node 需要被监听的节点\n */\n public observe(node: Node) {\n if (!(this.node instanceof Node)) {\n this.node = node\n this.connect()\n }\n }\n\n /**\n * 连接监听器(开始观察)\n */\n public connect() {\n if (this.node) {\n this.observer.observe(this.node, this.options)\n return this\n }\n throw new Error('还未初始化绑定,请您先绑定有效的 Node 节点')\n }\n\n /**\n * 断开监听器(停止观察)\n */\n public disconnect() {\n let list = this.observer.takeRecords()\n list.length && this.callback(list)\n this.observer.disconnect()\n }\n}\n","/**\n * @description 历史记录\n * @author fangzhicong\n */\n\nimport ContentCache from './data/content'\nimport ScrollCache from './data/scroll'\nimport RangeCache from './data/range'\nimport Editor from '../index'\n\n/**\n * 历史记录(撤销、恢复)\n */\nexport default class History {\n // 数据缓存器实例\n private content: ContentCache\n\n // scroll 缓存\n private scroll: ScrollCache\n\n // Range 缓存\n private range: RangeCache\n\n constructor(public editor: Editor) {\n this.content = new ContentCache(editor)\n this.scroll = new ScrollCache(editor)\n this.range = new RangeCache(editor)\n }\n\n /**\n * 获取缓存中的数据长度。格式为:[正常的数据的条数,被撤销的数据的条数]\n */\n public get size() {\n return this.scroll.size\n }\n\n /**\n * 初始化绑定。在 editor.create() 结尾时调用\n */\n public observe() {\n this.content.observe()\n this.scroll.observe()\n // 标准模式下才进行初始化绑定\n !this.editor.isCompatibleMode && this.range.observe()\n }\n\n /**\n * 保存数据\n */\n public save(mutations: MutationRecord[]) {\n if (mutations.length) {\n this.content.save(mutations)\n this.scroll.save()\n // 标准模式下才进行缓存\n !this.editor.isCompatibleMode && this.range.save()\n }\n }\n\n /**\n * 撤销\n */\n public revoke() {\n this.editor.change.disconnect()\n const res = this.content.revoke()\n if (res) {\n this.scroll.revoke()\n // 标准模式下才执行\n if (!this.editor.isCompatibleMode) {\n this.range.revoke()\n this.editor.$textElem.focus()\n }\n }\n this.editor.change.connect()\n // 如果用户在 onchange 中修改了内容DOM那么缓存中的节点数据可能不连贯了不连贯的数据必将导致恢复失败所以必须将用户的 onchange 处于监控状态中\n res && this.editor.change.emit()\n }\n\n /**\n * 恢复\n */\n public restore() {\n this.editor.change.disconnect()\n const res = this.content.restore()\n if (res) {\n this.scroll.restore()\n // 标准模式下才执行\n if (!this.editor.isCompatibleMode) {\n this.range.restore()\n this.editor.$textElem.focus()\n }\n }\n this.editor.change.connect()\n // 与 revoke 同理\n res && this.editor.change.emit()\n }\n}\n","/**\n * @description 整合差异备份和内容备份,进行统一管理\n * @author fangzhicong\n */\n\nimport NodeCache from './node'\nimport HtmlCache from './html'\nimport Editor from '../../index'\n\nexport default class ContentCache {\n /**\n * 内容备份的管理器\n */\n public cache?: HtmlCache | NodeCache\n\n constructor(public editor: Editor) {}\n\n /**\n * 初始化绑定\n */\n observe() {\n if (this.editor.isCompatibleMode) {\n // 兼容模式(内容备份)\n this.cache = new HtmlCache(this.editor)\n } else {\n // 标准模式(差异备份/节点备份)\n this.cache = new NodeCache(this.editor)\n }\n this.cache.observe()\n }\n\n /**\n * 保存\n */\n public save(mutations: MutationRecord[]) {\n if (this.editor.isCompatibleMode) {\n ;(this.cache as HtmlCache).save()\n } else {\n ;(this.cache as NodeCache).compile(mutations)\n }\n }\n\n /**\n * 撤销\n */\n public revoke() {\n return this.cache?.revoke()\n }\n\n /**\n * 恢复\n */\n public restore() {\n return this.cache?.restore()\n }\n}\n","/**\n * @description 差异备份\n * @author fangzhicong\n */\n\nimport Cache from '../../../../utils/data-structure/cache'\nimport compile from './compile'\nimport { revoke, restore } from './decompilation'\nimport { Compile } from '../type'\nimport Editor from '../../../index'\n\nexport default class NodeCache extends Cache<Compile[]> {\n constructor(public editor: Editor) {\n super(editor.config.historyMaxSize)\n }\n\n public observe() {\n this.resetMaxSize(this.editor.config.historyMaxSize)\n }\n\n /**\n * 编译并保存数据\n */\n public compile(data: MutationRecord[]) {\n this.save(compile(data))\n return this\n }\n\n /**\n * 撤销\n */\n public revoke() {\n return super.revoke(data => {\n revoke(data)\n })\n }\n\n /**\n * 恢复\n */\n public restore() {\n return super.restore(data => {\n restore(data)\n })\n }\n}\n","/**\n * @description 数据结构 - 栈\n * @author fangzhicong\n */\n\n/**\n * 栈(限制最大数据条数,栈满后可以继续入栈,而先入栈的数据将失效)\n */\n// 取名灵感来自 Math.ceil向上取有效值\nexport class CeilStack<T> {\n /**\n * 数据缓存\n */\n protected data: T[] = []\n\n /**\n * 栈的最大长度。为零则长度不限\n */\n protected max: number = 0\n\n /**\n * 标识是否重设过 max 值\n */\n protected reset: boolean = false\n\n constructor(max: number = 0) {\n max = Math.abs(max)\n max && (this.max = max)\n }\n\n /**\n * 允许用户重设一次 max 值\n */\n public resetMax(maxSize: number) {\n maxSize = Math.abs(maxSize)\n if (!this.reset && !isNaN(maxSize)) {\n this.max = maxSize\n this.reset = true\n }\n }\n\n /**\n * 当前栈中的数据条数\n */\n public get size() {\n return this.data.length\n }\n\n /**\n * 入栈\n * @param data 入栈的数据\n */\n public instack(data: T) {\n this.data.unshift(data)\n if (this.max && this.size > this.max) {\n this.data.length = this.max\n }\n return this\n }\n\n /**\n * 出栈\n */\n public outstack(): T | undefined {\n return this.data.shift()\n }\n\n /**\n * 清空栈\n */\n public clear() {\n this.data.length = 0\n return this\n }\n}\n","/**\n * @description 数据整理\n * @author fangzhicong\n */\n\nimport { TargetPosition, DiffNodes, Compile } from '../type'\nimport { UA, toArray } from '../../../../utils/util'\n\n/**\n * 数据类型\n */\nexport function compileType(data: string) {\n switch (data) {\n case 'childList':\n return 'node'\n case 'attributes':\n return 'attr'\n default:\n return 'text'\n }\n}\n\n/**\n * 获取当前的文本内容\n */\nexport function compileValue(data: MutationRecord) {\n switch (data.type) {\n case 'attributes':\n return (data.target as Element).getAttribute(data.attributeName as string) || ''\n case 'characterData':\n return data.target.textContent\n default:\n return ''\n }\n}\n\n/**\n * addedNodes/removedNodes\n */\nexport function complieNodes(data: MutationRecord) {\n const temp: DiffNodes = {}\n if (data.addedNodes.length) {\n temp.add = toArray(data.addedNodes)\n }\n if (data.removedNodes.length) {\n temp.remove = toArray(data.removedNodes)\n }\n return temp\n}\n\n/**\n * addedNodes/removedNodes 的相对位置\n */\nexport function compliePosition(data: MutationRecord) {\n let temp: TargetPosition\n if (data.previousSibling) {\n temp = {\n type: 'before',\n target: data.previousSibling,\n }\n } else if (data.nextSibling) {\n temp = {\n type: 'after',\n target: data.nextSibling,\n }\n } else {\n temp = {\n type: 'parent',\n target: data.target,\n }\n }\n return temp\n}\n\n/**\n * 补全 Firefox 数据的特殊标签\n */\nconst tag = ['UL', 'OL', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6']\n\n/**\n * 将 MutationRecord 转换成自定义格式的数据\n */\nexport default function compile(data: MutationRecord[]) {\n const temp: Compile[] = []\n // 以下两个变量是兼容 Firefox 时使用到的\n // 前一次操作为删除元素节点\n let removeNode: Node | false = false\n // 连续的节点删除记录\n const removeCache: Node[] = []\n data.forEach((record, index) => {\n const item: Compile = {\n type: compileType(record.type),\n target: record.target,\n attr: record.attributeName || '',\n value: compileValue(record) || '',\n oldValue: record.oldValue || '',\n nodes: complieNodes(record),\n position: compliePosition(record),\n }\n temp.push(item)\n // 兼容 Firefox补全数据这几十行代码写得吐血跟 IE 有得一拼)\n if (!UA.isFirefox) {\n return\n }\n // 正常的数据:缩进、行高、超链接、对齐方式、引用、插入表情、插入图片、分割线、表格、插入代码\n // 普通的数据补全:标题(纯文本内容)、加粗、斜体、删除线、下划线、颜色、背景色、字体、字号、列表(纯文本内容)\n // 特殊的数据补全:标题(包含 HTMLElement、列表包含 HTMLElement 或 ul -> ol 或 ol -> ul 或 Enter\n if (removeNode && record.addedNodes.length && record.addedNodes[0].nodeType == 1) {\n // 需要被全数据的目标节点\n const replenishNode = record.addedNodes[0]\n const replenishData: Compile = {\n type: 'node',\n target: replenishNode,\n attr: '',\n value: '',\n oldValue: '',\n nodes: {\n add: [removeNode],\n },\n position: {\n type: 'parent',\n target: replenishNode,\n },\n }\n // 特殊的标签:['UL', 'OL', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6']\n if (tag.indexOf(replenishNode.nodeName) != -1) {\n replenishData.nodes.add = toArray(replenishNode.childNodes)\n temp.push(replenishData)\n }\n // 上一个删除元素是文本节点\n else if (removeNode.nodeType == 3) {\n if (contains(replenishNode, removeCache)) {\n replenishData.nodes.add = toArray(replenishNode.childNodes)\n }\n temp.push(replenishData)\n }\n // 上一个删除元素是 Element && 由近到远的删除元素至少有一个是需要补全数据节点的子节点\n else if (\n tag.indexOf(record.target.nodeName) == -1 &&\n contains(replenishNode, removeCache)\n ) {\n replenishData.nodes.add = toArray(replenishNode.childNodes)\n temp.push(replenishData)\n }\n }\n // 记录本次的节点信息\n if (item.type == 'node' && record.removedNodes.length == 1) {\n removeNode = record.removedNodes[0]\n removeCache.push(removeNode)\n } else {\n removeNode = false\n removeCache.length = 0\n }\n })\n return temp\n}\n\n// 删除元素的历史记录中包含有多少个目标节点的子元素\nfunction contains(tar: Node, childs: Node[]) {\n let count = 0\n for (let i = childs.length - 1; i > 0; i--) {\n if (tar.contains(childs[i])) {\n count++\n } else {\n break\n }\n }\n return count\n}\n","/**\n * @description 撤销 - 逆向操作,删除节点\n * @author fangzhicong\n */\nimport { Compile } from '../type'\n\n/**\n * 将节点添加到 DOM 树中\n * @param data 数据项\n * @param list 节点集合addedNodes 或 removedNodes\n */\nfunction insertNode(data: Compile, list: Node[]) {\n let reference = data.position.target\n switch (data.position.type) {\n // reference 在这些节点的前面\n case 'before':\n if (reference.nextSibling) {\n reference = reference.nextSibling\n list.forEach((item: Node) => {\n data.target.insertBefore(item, reference)\n })\n } else {\n list.forEach((item: Node) => {\n data.target.appendChild(item)\n })\n }\n break\n // reference 在这些节点的后面\n case 'after':\n list.forEach((item: Node) => {\n data.target.insertBefore(item, reference)\n })\n break\n // parent\n // reference 是这些节点的父节点\n default:\n list.forEach((item: Node) => {\n reference.appendChild(item)\n })\n break\n }\n}\n\n/* ------------------------------------------------------------------ 撤销逻辑 ------------------------------------------------------------------ */\n\nfunction revokeNode(data: Compile) {\n for (let [relative, list] of Object.entries(data.nodes)) {\n switch (relative) {\n // 反向操作,将这些节点从 DOM 中移除\n case 'add':\n list.forEach((item: Node) => {\n data.target.removeChild(item)\n })\n break\n // remove反向操作将这些节点添加到 DOM 中)\n default: {\n insertNode(data, list)\n break\n }\n }\n }\n}\n\n/**\n * 撤销 attribute\n */\nfunction revokeAttr(data: Compile) {\n let target = data.target as HTMLElement\n if (data.oldValue == null) {\n target.removeAttribute(data.attr)\n } else {\n target.setAttribute(data.attr, data.oldValue)\n }\n}\n\n/**\n * 撤销文本内容\n */\nfunction revokeText(data: Compile) {\n data.target.textContent = data.oldValue\n}\n\nconst revokeFns = {\n node: revokeNode,\n text: revokeText,\n attr: revokeAttr,\n}\n\n// 撤销 - 对外暴露的接口\nexport function revoke(data: Compile[]) {\n for (let i = data.length - 1; i > -1; i--) {\n let item = data[i]\n revokeFns[item.type](item)\n }\n}\n\n/* ------------------------------------------------------------------ 恢复逻辑 ------------------------------------------------------------------ */\n\nfunction restoreNode(data: Compile) {\n for (let [relative, list] of Object.entries(data.nodes)) {\n switch (relative) {\n case 'add': {\n insertNode(data, list)\n break\n }\n // remove\n default: {\n list.forEach((item: Node) => {\n ;(item.parentNode as Node).removeChild(item)\n })\n break\n }\n }\n }\n}\n\nfunction restoreText(data: Compile) {\n data.target.textContent = data.value\n}\n\nfunction restoreAttr(data: Compile) {\n ;(data.target as HTMLElement).setAttribute(data.attr, data.value)\n}\n\nconst restoreFns = {\n node: restoreNode,\n text: restoreText,\n attr: restoreAttr,\n}\n\n// 恢复 - 对外暴露的接口\nexport function restore(data: Compile[]) {\n for (let item of data) {\n restoreFns[item.type](item)\n }\n}\n","/**\n * @description 完整的内容备份,每次变化都将备份整个编辑器的内容\n * @author fangzhicong\n */\nimport Editor from '../../../index'\nimport { TailChain } from '../../../../utils/data-structure/chain'\n\nexport default class HtmlCache {\n // 缓存数据\n private data: TailChain<string>\n\n constructor(public editor: Editor) {\n this.data = new TailChain()\n }\n\n /**\n * 初始化绑定\n */\n observe() {\n this.data.resetMax(this.editor.config.historyMaxSize)\n // 保存初始化值\n this.data.insertLast(this.editor.$textElem.html())\n }\n\n /**\n * 保存\n */\n public save() {\n this.data.insertLast(this.editor.$textElem.html())\n return this\n }\n\n /**\n * 撤销\n */\n public revoke() {\n let data = this.data.prev()\n if (data) {\n this.editor.$textElem.html(data)\n return true\n }\n return false\n }\n\n /**\n * 恢复\n */\n public restore() {\n let data = this.data.next()\n if (data) {\n this.editor.$textElem.html(data)\n return true\n }\n return false\n }\n}\n","/**\n * @description 数据结构 - 链表\n * @author fangzhicong\n */\n\n/**\n * 特殊链表(数据尾插入、插入前自动清理指针后边的数据、插入后指针永远定位于最后一位元素、可限制链表长度、指针双向移动)\n */\nexport class TailChain<T> {\n /**\n * 链表数据\n */\n protected data: T[] = []\n\n /**\n * 链表最大长度,零表示长度不限\n */\n protected max: number = 0\n\n /**\n * 指针\n */\n protected point = 0\n\n // 当前指针是否人为操作过\n protected isRe = false\n\n /**\n * 允许用户重设一次 max 值\n */\n resetMax(maxSize: number) {\n maxSize = Math.abs(maxSize)\n maxSize && (this.max = maxSize)\n }\n\n /**\n * 当前链表的长度\n */\n get size() {\n return this.data.length\n }\n\n /**\n * 尾插入\n * @param data 插入的数据\n */\n public insertLast<K extends T>(data: K) {\n // 人为操作过指针,清除指针后面的元素\n if (this.isRe) {\n this.data.splice(this.point + 1)\n this.isRe = false\n }\n this.data.push(data)\n // 超出链表最大长度\n while (this.max && this.size > this.max) {\n this.data.shift()\n }\n // 从新定位指针到最后一个元素\n this.point = this.size - 1\n return this\n }\n\n /**\n * 获取当前指针元素\n */\n public current(): T | undefined {\n return this.data[this.point]\n }\n\n /**\n * 获取上一指针元素\n */\n public prev(): T | undefined {\n !this.isRe && (this.isRe = true)\n this.point--\n if (this.point < 0) {\n this.point = 0\n return undefined\n }\n return this.current()\n }\n\n /**\n * 下一指针元素\n */\n public next(): T | undefined {\n !this.isRe && (this.isRe = true)\n this.point++\n if (this.point >= this.size) {\n this.point = this.size - 1\n return undefined\n }\n return this.current()\n }\n}\n","/**\n * @description 记录 scrollTop\n * @author fangzhicong\n */\n\nimport Cache from '../../../../utils/data-structure/cache'\nimport Editor from '../../../index'\nimport { ScrollItem } from '../type'\n\nexport default class ScrollCache extends Cache<ScrollItem> {\n /**\n * 上一次的 scrollTop\n */\n private last: number = 0\n\n /**\n * 编辑区容器元素节点\n */\n private target: Element\n\n constructor(public editor: Editor) {\n super(editor.config.historyMaxSize)\n this.target = editor.$textElem.elems[0]\n }\n\n /**\n * 给编辑区容器绑定 scroll 事件\n */\n public observe() {\n this.target = this.editor.$textElem.elems[0]\n this.editor.$textElem.on('scroll', () => {\n this.last = this.target.scrollTop\n })\n this.resetMaxSize(this.editor.config.historyMaxSize)\n }\n\n /**\n * 保存 scrollTop 值\n */\n public save() {\n super.save([this.last, this.target.scrollTop])\n return this\n }\n\n /**\n * 撤销\n */\n public revoke() {\n return super.revoke(data => {\n this.target.scrollTop = data[0]\n })\n }\n\n /**\n * 恢复\n */\n public restore() {\n return super.restore(data => {\n this.target.scrollTop = data[1]\n })\n }\n}\n","/**\n * @description 记录 range 变化\n * @author fangzhicong\n */\n\nimport Cache from '../../../../utils/data-structure/cache'\nimport Editor from '../../../index'\nimport { RangeItem } from '../type'\nimport $ from '../../../../utils/dom-core'\nimport { debounce } from '../../../../utils/util'\n\n/**\n * 把 Range 对象转换成缓存对象\n * @param range Range 对象\n */\nfunction rangeToObject(range: Range): RangeItem {\n return {\n start: [range.startContainer, range.startOffset],\n end: [range.endContainer, range.endOffset],\n root: range.commonAncestorContainer,\n collapsed: range.collapsed,\n }\n}\n\n/**\n * 编辑区 range 缓存管理器\n */\nexport default class RangeCache extends Cache<[RangeItem, RangeItem]> {\n /**\n * 变化前的 Range 数据\n */\n private lastRange: RangeItem\n\n /**\n * 有效选区的根节点\n */\n private root: Element\n\n public updateLastRange: Function\n\n constructor(public editor: Editor) {\n super(editor.config.historyMaxSize)\n this.lastRange = rangeToObject(document.createRange())\n this.root = editor.$textElem.elems[0]\n this.updateLastRange = debounce(() => {\n this.lastRange = rangeToObject(this.rangeHandle)\n }, editor.config.onchangeTimeout)\n }\n\n /**\n * 获取 Range 对象\n */\n public get rangeHandle() {\n const selection = document.getSelection()\n return selection && selection.rangeCount ? selection.getRangeAt(0) : document.createRange()\n }\n\n /**\n * 初始化绑定\n */\n public observe() {\n const self = this\n // 同步节点数据\n this.root = this.editor.$textElem.elems[0]\n this.resetMaxSize(this.editor.config.historyMaxSize)\n // selection change 回调函数\n function selectionchange() {\n const handle = self.rangeHandle\n if (\n self.root === handle.commonAncestorContainer ||\n self.root.contains(handle.commonAncestorContainer)\n ) {\n // 非中文输入状态下才进行记录\n if (!self.editor.isComposing) {\n self.updateLastRange()\n }\n }\n }\n // backspace 和 delete 手动更新 Range 缓存\n function deletecallback(e: KeyboardEvent) {\n if (e.key == 'Backspace' || e.key == 'Delete') {\n // self.lastRange = rangeToObject(self.rangeHandle)\n self.updateLastRange()\n }\n }\n // 绑定事件(必须绑定在 document 上,不能绑定在 window 上)\n $(document).on('selectionchange', selectionchange)\n // 解除事件绑定\n this.editor.beforeDestroy(function () {\n $(document).off('selectionchange', selectionchange)\n })\n\n // 删除文本时手动更新 range\n self.editor.$textElem.on('keydown', deletecallback)\n }\n\n /**\n * 保存 Range\n */\n public save() {\n let current = rangeToObject(this.rangeHandle)\n super.save([this.lastRange, current])\n this.lastRange = current\n return this\n }\n\n /**\n * 设置 Range在 撤销/恢复 中调用\n * @param range 缓存的 Range 数据\n */\n public set(range: RangeItem | undefined) {\n try {\n if (range) {\n const handle = this.rangeHandle\n handle.setStart(...range.start)\n handle.setEnd(...range.end)\n this.editor.menus.changeActive()\n return true\n }\n } catch (err) {\n return false\n }\n return false\n }\n\n /**\n * 撤销\n */\n public revoke() {\n return super.revoke(data => {\n this.set(data[0])\n })\n }\n\n /**\n * 恢复\n */\n public restore() {\n return super.restore(data => {\n this.set(data[1])\n })\n }\n}\n","/**\n * @description disable 内容编辑\n * @author lichunlin\n */\nimport Editor from '../index'\nimport $, { DomElement } from '../../utils/dom-core'\nimport '../../assets/style/disable.less'\n\nexport default function disableInit(editor: Editor) {\n let isCurtain: Boolean = false // 避免重复生成幕布\n let $contentDom: DomElement\n let $menuDom: DomElement\n\n // 禁用期间,通过 js 修改内容后,刷新内容\n editor.txt.eventHooks.changeEvents.push(function () {\n if (isCurtain) {\n $contentDom.find('.w-e-content-preview').html(editor.$textElem.html())\n }\n })\n\n // 创建幕布\n function disable() {\n if (isCurtain) return\n // 隐藏编辑区域\n editor.$textElem.hide()\n // 生成div 渲染编辑内容\n let textContainerZindexValue = editor.zIndex.get('textContainer')\n const content = editor.txt.html()\n $contentDom = $(\n `<div class=\"w-e-content-mantle\" style=\"z-index:${textContainerZindexValue}\">\n <div class=\"w-e-content-preview w-e-text\">${content}</div>\n </div>`\n )\n editor.$textContainerElem.append($contentDom)\n // 生成div 菜单膜布\n let menuZindexValue = editor.zIndex.get('menu')\n $menuDom = $(`<div class=\"w-e-menue-mantle\" style=\"z-index:${menuZindexValue}\"></div>`)\n editor.$toolbarElem.append($menuDom)\n isCurtain = true\n editor.isEnable = false\n }\n\n // 销毁幕布并显示可编辑区域\n function enable() {\n if (!isCurtain) return\n $contentDom.remove()\n $menuDom.remove()\n editor.$textElem.show()\n isCurtain = false\n editor.isEnable = true\n }\n\n return { disable, enable }\n}\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./disable.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-content-mantle {\\n width: 100%;\\n height: 100%;\\n overflow-y: auto;\\n}\\n.w-e-content-mantle .w-e-content-preview {\\n width: 100%;\\n min-height: 100%;\\n padding: 0 10px;\\n line-height: 1.5;\\n}\\n.w-e-content-mantle .w-e-content-preview img {\\n cursor: default;\\n}\\n.w-e-content-mantle .w-e-content-preview img:hover {\\n box-shadow: none;\\n}\\n.w-e-menue-mantle {\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n top: 0;\\n left: 0;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","/**\n * @description range变化\n * @author liuwei\n */\nimport Editor from '../index'\nexport default class SelectionChange {\n constructor(public editor: Editor) {\n // 绑定的事件\n const init = () => {\n const activeElement = document.activeElement\n if (activeElement === editor.$textElem.elems[0]) {\n this.emit()\n }\n }\n\n // 选取变化事件监听\n window.document.addEventListener('selectionchange', init)\n\n // 摧毁时移除监听\n this.editor.beforeDestroy(() => {\n window.document.removeEventListener('selectionchange', init)\n })\n }\n\n public emit(): void {\n // 执行rangeChange函数\n const { onSelectionChange } = this.editor.config\n if (onSelectionChange) {\n const selection = this.editor.selection\n selection.saveRange()\n if (!selection.isSelectionEmpty())\n onSelectionChange({\n // 当前文本\n text: selection.getSelectionText(),\n // 当前的html\n html: selection.getSelectionContainerElem()?.elems[0].innerHTML,\n // select对象\n selection: selection,\n })\n }\n }\n}\n","import Editor from '../editor'\nimport { deepClone } from '../utils/util'\n\n// 插件注册配置约束\nexport interface RegisterOptions {\n intention: any\n config?: any\n // example?: any // 原本是用来存放实例化后的插件对象的\n}\n\n// 插件列表类型\nexport type pluginsListType = {\n [key: string]: RegisterOptions\n}\n\n/**\n * 插件注册\n * @param { string } name 插件名\n * @param { RegisterOptions } options 插件配置\n * @param { pluginsListType } memory 存储介质\n */\nexport function registerPlugin(name: string, options: RegisterOptions, memory: pluginsListType) {\n if (!name) {\n throw new TypeError('name is not define')\n }\n\n if (!options) {\n throw new TypeError('options is not define')\n }\n\n if (!options.intention) {\n throw new TypeError('options.intention is not define')\n }\n\n if (options.intention && typeof options.intention !== 'function') {\n throw new TypeError('options.intention is not function')\n }\n\n if (memory[name]) {\n console.warn(`plugin ${name} 已存在,已覆盖。`)\n }\n\n memory[name] = options\n}\n\n/**\n * 插件初始化\n * @param { Editor } editor 编辑器实例\n */\nexport default function initPlugins(editor: Editor) {\n const plugins: pluginsListType = Object.assign(\n {},\n deepClone(Editor.globalPluginsFunctionList),\n deepClone(editor.pluginsFunctionList)\n )\n\n const values = Object.entries(plugins)\n values.forEach(([name, options]) => {\n console.info(`plugin ${name} initializing`)\n const { intention, config } = options\n intention(editor, config)\n console.info(`plugin ${name} initialization complete`)\n })\n}\n"],"sourceRoot":""}