UNPKG

813 kBSource Map (JSON)View Raw
1{"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/./src/utils/dom-core.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/object/create.js","webpack://wangEditor/./node_modules/core-js-pure/internals/export.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/object/set-prototype-of.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/for-each.js","webpack://wangEditor/./src/utils/util.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/path.js","webpack://wangEditor/./node_modules/core-js-pure/internals/define-well-known-symbol.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/descriptors.js","webpack://wangEditor/./node_modules/core-js-pure/internals/has.js","webpack://wangEditor/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-define-property.js","webpack://wangEditor/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://wangEditor/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://wangEditor/./node_modules/css-loader/dist/runtime/api.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js","webpack://wangEditor/./src/menus/menu-constructors/DropListMenu.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/an-object.js","webpack://wangEditor/./src/menus/menu-constructors/BtnMenu.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://wangEditor/./node_modules/core-js-pure/internals/get-built-in.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-method-uses-to-length.js","webpack://wangEditor/./src/menus/menu-constructors/Panel.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/a-function.js","webpack://wangEditor/./src/utils/const.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack://wangEditor/./src/menus/menu-constructors/PanelMenu.ts","webpack://wangEditor/./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-length.js","webpack://wangEditor/./node_modules/core-js-pure/internals/is-pure.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-object.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/set-to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/internals/internal-state.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-iteration.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack://wangEditor/./src/menus/menu-constructors/Tooltip.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/function-bind-context.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-create.js","webpack://wangEditor/./node_modules/core-js-pure/internals/hidden-keys.js","webpack://wangEditor/./node_modules/core-js-pure/internals/redefine.js","webpack://wangEditor/./node_modules/core-js-pure/modules/web.dom-collections.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/index-of.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-primitive.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-keys.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-integer.js","webpack://wangEditor/./node_modules/core-js-pure/internals/shared-key.js","webpack://wangEditor/./node_modules/core-js-pure/internals/uid.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/modules/es.string.iterator.js","webpack://wangEditor/./node_modules/core-js-pure/internals/whitespaces.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/document-create-element.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/shared.js","webpack://wangEditor/./node_modules/core-js-pure/internals/shared-store.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/native-symbol.js","webpack://wangEditor/./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack://wangEditor/./node_modules/core-js-pure/internals/an-instance.js","webpack://wangEditor/./node_modules/core-js-pure/internals/engine-user-agent.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/./node_modules/core-js-pure/internals/engine-v8-version.js","webpack://wangEditor/./node_modules/core-js-pure/internals/define-iterator.js","webpack://wangEditor/./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-species-create.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/bind.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/splice.js","webpack://wangEditor/./node_modules/core-js-pure/internals/create-property.js","webpack://wangEditor/./node_modules/core-js-pure/internals/string-trim.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/./src/menus/menu-constructors/Menu.ts","webpack://wangEditor/./src/menus/img/upload-img.ts","webpack://wangEditor/./src/utils/data-structure/cache.ts","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/use-symbol-as-uid.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/inspect-source.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/core-js-pure/internals/iterators-core.js","webpack://wangEditor/./node_modules/core-js-pure/internals/array-method-is-strict.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.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/collection-strong.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/array/is-array.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.iterator.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-get-own-property-names.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js","webpack://wangEditor/./src/config/style.ts","webpack://wangEditor/./src/text/paste/paste-event.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/set.js","webpack://wangEditor/./src/menus/menu-constructors/DropList.ts","webpack://wangEditor/./src/menus/link/is-active.ts","webpack://wangEditor/./src/menus/code/is-active.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/stable/object/create.js","webpack://wangEditor/./node_modules/core-js-pure/es/object/create.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.object.create.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-define-properties.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/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/modules/es.promise.js","webpack://wangEditor/./node_modules/core-js-pure/internals/object-to-string.js","webpack://wangEditor/./node_modules/core-js-pure/internals/check-correctness-of-iteration.js","webpack://wangEditor/./node_modules/core-js-pure/internals/microtask.js","webpack://wangEditor/./node_modules/core-js-pure/internals/host-report-errors.js","webpack://wangEditor/./node_modules/core-js-pure/internals/native-weak-map.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/create-iterator-constructor.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.array.iterator.js","webpack://wangEditor/./node_modules/core-js-pure/internals/dom-iterables.js","webpack://wangEditor/./src/editor/index.ts","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/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/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/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/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/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/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/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/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/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/@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/es/symbol/iterator.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/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/internals/object-get-own-property-names-external.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.async-iterator.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/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.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/core-js-pure/stable/set-timeout.js","webpack://wangEditor/./node_modules/core-js-pure/modules/web.timers.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/@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/./src/config/index.ts","webpack://wangEditor/./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","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/text.ts","webpack://wangEditor/./src/config/lang.ts","webpack://wangEditor/./src/config/history.ts","webpack://wangEditor/./src/editor/selection.ts","webpack://wangEditor/./src/editor/selection-range-top-nodes/index.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/./src/menus/menu-list.ts","webpack://wangEditor/./src/menus/bold/index.ts","webpack://wangEditor/./node_modules/core-js-pure/stable/object/set-prototype-of.js","webpack://wangEditor/./node_modules/core-js-pure/es/object/set-prototype-of.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.object.set-prototype-of.js","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/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/img/index.ts","webpack://wangEditor/./src/menus/img/create-panel-conf.ts","webpack://wangEditor/./src/editor/upload/upload-core.ts","webpack://wangEditor/./src/editor/upload/progress.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/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/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/index.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/./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/./src/menus/table/bind-event/event/getNode.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/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/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/./node_modules/@babel/runtime-corejs3/core-js-stable/object/entries.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/./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"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","obj","AGENT_EVENTS","_styleArrTrim","style","styleArr","resultArr","split","item","arr","length","push","selector","this","elems","dataSource","DomElement","selectorResult","nodeType","Node","HTMLCollection","NodeList","_isDOMList","toArray","Array","tmpSelector","replace","html","div","document","createElement","innerHTML","children","_createElemByHTML","querySelectorAll","_querySelectorAll","id","forEach","fn","elem","result","clone","deep","cloneList","cloneNode","$","index","first","f","last","on","type","addEventListener","agentFn","e","target","matches","off","idx","removeEventListener","attr","val","getAttribute","setAttribute","removeAttr","removeAttribute","addClass","className","join","removeClass","hasClass","css","currentStyle","getBoundingClientRect","show","hide","childNodes","replaceChildAll","$children","parent","getNode","hasChildNodes","firstChild","removeChild","append","child","appendChild","remove","parentElement","isContain","$child","contains","getSizeData","getNodeName","nodeName","getClientHeight","clientHeight","find","text","focus","prev","previousElementSibling","next","nextElementSibling","parentUntil","curElem","equal","$elem","HTMLElement","insertBefore","$referenceNode","referenceNode","parentNode","insertAfter","anchorNode","nextSibling","data","set","getNodeTop","editor","$parent","$textElem","getOffsetData","$node","top","offsetTop","left","offsetLeft","width","offsetWidth","height","offsetHeight","offsetParent","scrollTop","scrollTo","arg","global","getOwnPropertyDescriptor","isForced","path","createNonEnumerableProperty","has","wrapConstructor","NativeConstructor","Wrapper","a","b","arguments","apply","options","source","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","descriptor","TARGET","GLOBAL","STATIC","stat","PROTO","proto","nativeSource","targetPrototype","forced","noTargetGet","wrap","Function","sham","real","_ua","navigator","userAgent","math","match","isOldEdge","isFirefox","test","isIE","isWebkit","UA","NavUA","prefix","Math","random","toString","fakeArr","interval","flag","args","delay","lastFn","clearTimeout","setTimeout","deepClone","it","check","globalThis","self","shared","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","wrappedWellKnownSymbolModule","NAME","exec","error","fails","DESCRIPTORS","definePropertyModule","createPropertyDescriptor","IE8_DOM_DEFINE","anObject","toPrimitive","nativeDefineProperty","O","P","Attributes","TypeError","CONSTRUCTOR","memo","isOldIE","Boolean","all","atob","getTarget","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","list","idCountMap","identifiers","base","count","concat","media","sourceMap","references","updater","addStyle","insertStyleElement","attributes","nonce","keys","insert","Error","textStore","replaceText","replacement","filter","applyToSingletonTag","styleSheet","cssText","cssNode","createTextNode","applyToTag","btoa","unescape","encodeURIComponent","JSON","stringify","singleton","singletonCounter","update","styleIndex","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_i","_index","splice","useSourceMap","map","content","cssMapping","sourceMapping","base64","sourceURLs","sources","sourceRoot","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","conf","title","i18next","config","lang","dropList","selection","getRange","zIndex","txt","eventHooks","dropListMenuHoverEvents","showTimeoutId","hideTimeoutId","DropListMenu","isObject","String","BtnMenu","IndexedObject","requireObjectCoercible","aFunction","variable","undefined","namespace","method","cache","thrower","METHOD_NAME","ACCESSORS","argument0","argument1","menu","$container","clickEvents","Panel","hideCurAllPanels","toolbarClickEvents","createdMenus","rect","$toolbarElem","menuRect","$closeBtn","$tabTitleContainer","$tabContentContainer","tabs","tabTitleArr","tabContentArr","tab","tabIndex","tpl","$title","$content","stopPropagation","events","event","EMPTY_FN","needToHide","$inputs","setPanel","add","size","panel","imgRegex","urlRegex","PanelMenu","bitmap","configurable","writable","toInteger","min","argument","isArrayIteratorMethod","toLength","getIteratorMethod","iteratorClose","Result","stopped","iterable","unboundFunction","iterator","iterFn","step","that","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","done","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","wellKnownSymbol","TAG","SET_METHOD","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","WeakMap","store","state","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","TYPE","toObject","arraySpeciesCreate","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","specificCreate","boundFunction","some","every","findIndex","$targetElem","_show","_isInsertTextContainer","getPositionData","tooltipHeight","pageScrollTop","documentElement","targetElemRect","textElemRect","targetOffset","targetParentElem","$textContainerElem","targetParentElemHeight","absoluteTop","bottom","appendMenus","$wrapper","preventDefault","res","onClick","Tooltip","slice","activeXDocument","defineProperties","enumBugKeys","documentCreateElement","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","write","close","temp","parentWindow","NullProtoObjectViaActiveX","display","src","contentWindow","open","F","Properties","DOMIterables","classof","Iterators","COLLECTION_NAME","Collection","CollectionPrototype","isArray","V8_VERSION","SPECIES","array","constructor","foo","nativePropertyIsEnumerable","propertyIsEnumerable","NASHORN_BUG","1","V","input","PREFERRED_STRING","valueOf","internalObjectKeys","ceil","floor","isNaN","postfix","classofRaw","CORRECT_ARGUMENTS","tag","tryGet","callee","PromiseCapability","C","resolve","reject","promise","$$resolve","$$reject","charAt","InternalStateModule","defineIterator","setInternalState","getInternalState","iterated","string","point","propertyIsEnumerableModule","toIndexedObject","nativeGetOwnPropertyDescriptor","EXISTS","toAbsoluteIndex","IS_INCLUDES","el","fromIndex","includes","indexOf","max","integer","IS_PURE","version","copyright","setGlobal","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","getPrototypeOf","aPossiblePrototype","setPrototypeOf","setter","CORRECT_SETTER","__proto__","getOwnPropertySymbols","Constructor","getBuiltIn","process","versions","v8","createIteratorConstructor","setToStringTag","redefine","IteratorsCore","IteratorPrototype","BUGGY_SAFARI_ITERATORS","ITERATOR","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","originalArray","propertyKey","whitespace","ltrim","RegExp","rtrim","start","end","trim","_Symbol$iterator","_Symbol","_typeof","_active","menuClickEvents","clickHandler","active","unActive","Menu","alert","alertInfo","debugInfo","customAlert","console","insertImg","i18nPrefix","cmd","linkImgCallback","img","onload","onerror","onabort","uploadImg","files","uploadImgServer","uploadImgShowBase64","maxSize","uploadImgMaxSize","maxSizeM","maxLength","uploadImgMaxLength","uploadFileName","uploadImgParams","uploadImgParamsWithUrl","uploadImgHeaders","hooks","uploadImgHooks","timeout","uploadImgTimeout","withCredentials","customUploadImg","resultFiles","errInfos","arrForEach","file","formData","FormData","uploadImgServerArr","uploadImgServerHash","xhr","headers","beforeSend","before","onTimeout","onProgress","percent","progressBar","lengthComputable","loaded","total","onError","status","onFail","resultStr","fail","onSuccess","customInsert","errno","link","success","_this","reader","FileReader","readAsDataURL","UploadImg","isRe","CeilStack","revokeData","resetMaxSize","resetMax","save","clear","instack","revoke","outstack","restore","feature","detection","normalize","POLYFILL","NATIVE","toLowerCase","names","Promise","unsafe","CONSTRUCTOR_NAME","functionToString","inspectSource","defaultConstructor","S","defer","channel","port","IS_IOS","IS_NODE","location","setImmediate","clearImmediate","MessageChannel","Dispatch","counter","queue","run","runner","listener","post","postMessage","protocol","host","nextTick","now","port2","port1","onmessage","importScripts","newPromiseCapability","x","promiseCapability","PrototypeOfArrayIteratorPrototype","arrayIterator","InternalMetadataModule","iterate","anInstance","internalStateGetterFor","wrapper","common","IS_WEAK","ADDER","NativePrototype","exported","collection","IS_ADDER","getConstructor","REQUIRED","setStrong","FREEZING","METADATA","isExtensible","setMetadata","objectID","weakData","meta","fastKey","getWeakData","onFreeze","redefineAll","setSpecies","previous","entry","getEntry","removed","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","kind","defineWellKnownSymbol","getOwnPropertyNames","getPasteText","clipboardData","pasteText","getData","replaceHtmlSymbol","filterStyle","ignoreImg","pasteHtml","items","getAsFile","$list","$li","rendered","$menuELem","menuHeight","DropList","$selectionELem","getSelectionContainerElem","ex","desc","g","D","objectKeys","api","default","locals","___CSS_LOADER_API_IMPORT___","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_REPLACEMENT_0___","url","hash","needQuotes","Element","ownerDocument","$AggregateError","errors","message","errorsArray","AggregateError","ArrayPrototype","returnMethod","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","checkCorrectnessOfIteration","speciesConstructor","task","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","FakePromise","then","INCORRECT_ITERATION","isThenable","notify","isReject","notified","chain","reactions","ok","exited","reaction","handler","rejection","onHandleUnhandled","enter","exit","onUnhandled","reason","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","fetch","capability","$promiseResolve","remaining","alreadyCalled","race","SAFE_CLOSING","called","iteratorWithReturn","from","SKIP_CLOSING","ITERATION_SUPPORT","flush","toggle","node","macrotask","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","observe","characterData","allSettled","any","alreadyResolved","alreadyRejected","onFinally","isFunction","CONVERT_TO_STRING","pos","second","position","charCodeAt","codeAt","addToUnscopables","Arguments","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","EDITOR_ID","toolbarSelector","textSelector","beforeDestroyHooks","toolbarElemId","textElemId","isFocus","isComposing","isCompatibleMode","menus","change","history","disable","enable","initSelection","newLine","init","compatibleMode","onchangeTimeout","beforeDestroy","destroy","fullScreen","setFullScreen","unFullScreen","setUnFullScreen","scrollToHead","Editor","own","entryVirtual","$forEach","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","FunctionPrototype","factories","construct","argsLength","partArgs","arrayIncludes","stringIncludes","StringPrototype","$includes","notARegExp","correctIsRegExpLogic","searchString","isRegExp","MATCH","regexp","error1","error2","$filter","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","createProperty","0","deleteCount","insertCount","actualDeleteCount","A","k","to","len","actualStart","argumentsLength","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","Map","collectionStrong","preventExtensions","$trim","forcedStringTrimMethod","whitespaces","$map","WrappedWellKnownSymbolModule","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","nativeObjectCreate","getOwnPropertyNamesModule","getOwnPropertyNamesExternal","getOwnPropertySymbolsModule","getOwnPropertyDescriptorModule","HIDDEN","TO_PRIMITIVE","$Symbol","$stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","description","symbol","isSymbol","$defineProperty","$defineProperties","properties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","replacer","space","$replacer","windowNames","getWindowNames","scheduler","boundArgs","setInterval","nativeSlice","fin","parseInt","parseIntImplementation","$parseInt","hex","radix","defaultConfig","linkCheck","linkImgCheck","assign","nativeAssign","B","chr","T","j","SINA_PATH1","SINA_PATH2","fontNames","fontSizes","small","normal","large","colors","languageType","languageTab","emotions","alt","lineHeights","undoLimit","indentation","onchange","onfocus","onblur","onCatalogChange","pasteFilterStyle","pasteIgnoreImg","pasteTextHandle","styleWithCSS","showLinkImg","placeholder","zIndexFullScreen","showFullScreen","languages","wangEditor","插入","默认","创建","修改","如","请输入正文","dropListMenu","设置标题","背景颜色","文字颜色","设置字号","设置字体","设置缩进","对齐方式","设置行高","序列","正文","indent","增加缩进","减少缩进","justify","靠左","居中","靠右","两端","无序列表","有序列表","panelMenus","emoticon","新浪","emoji","手势","image","图片链接","上传图片","网络图片","链接","链接文字","取消链接","查看链接","video","插入视频","table","行","列","的","表格","添加行","删除行","添加列","删除列","设置表头","取消表头","插入表格","删除表格","code","删除代码","修改代码","插入代码","validate","张图片","大于","不是图片","返回结果","上传图片超时","上传图片错误","上传图片失败","插入图片错误","一次最多上传","下载链接失败","图片验证未通过","服务器返回状态","上传图片返回结果错误","请替换为支持的图片类型","您插入的网络图片无法识别","您刚才插入的图片链接未通过编辑器校验","en","historyMaxSize","_currentRange","saveRange","_range","getSelection","rangeCount","range","getRangeAt","$containerElem","$last","createRangeByElem","restoreSelection","collapseRange","toStart","collapse","getSelectionText","commonAncestorContainer","getSelectionStartElem","startContainer","getSelectionEndElem","endContainer","isSelectionEmpty","startOffset","endOffset","removeAllRanges","addRange","createEmptyRange","setEnd","isContent","createRange","selectNodeContents","selectNode","getSelectionRangeTopNodes","getSelectionNodes","moveCursor","setStart","SelectionAndRange","$nodeList","$startElem","$endElem","recordSelectionNodes","addNodeList","isEndElem","getNextSibling","SelectionRangeTopNodes","execCommand","insertHTML","insertElem","changeActive","queryCommandSupported","insertNode","deleteContents","queryCommandValue","queryCommandState","Command","changeEvents","dropEvents","keyupEvents","tabUpEvents","tabDownEvents","enterUpEvents","enterDownEvents","deleteUpEvents","deleteDownEvents","pasteEvents","linkClickEvents","codeClickEvents","textScrollEvents","imgClickEvents","imgDragBarMouseDownEvents","tableClickEvents","splitLineEvents","_saveRange","_bindEventHooks","togglePlaceholder","$placeholder","setJSON","nodeList","getJSON","keyCode","ctrlKey","metaKey","shiftKey","throttle","$link","$target","$img","$code","$splitLine","splitLineClickEvents","$dom","Text","$find","SKIPS_HOLES","insertEmptyP","$selectionElem","$p","$parentElem","$selectElem","txtHtml","selectionNodeName","parentNodeName","formatHtml","getPasteHtml","$topElem","topNodeName","formatCode","isIgnoreTag","IGNORE_TAGS","CUR_TAG","htmlParser","parse","startElement","attrs","EMPTY_TAGS","markTagStart","necessaryAttrKeys","NECESSARY_ATTRS","attrsForTag","attrStrArr","isEmpty","genStartHtml","characters","str","endElement","genEndHtml","comment","regForReplace","regForMatch","filterEmptySpan","TOP_LEVEL_TAGS","Set","SimpleHtmlParser","startTagRe","endTagRe","attrRe","oHandler","contentHandler","lm","rc","treatAsChars","oThis","substring","leftContext","lastMatch","rightContext","parseEndTag","parseStartTag","sTag","sTagName","sRest","parseAttributes","a0","a1","a2","a3","a4","a5","a6","parseAttribute","sAttribute","sName","empty","getChildrenJSON","elemResult","textContent","attrData","attrList","attrListLength","getHtmlByNodeList","$root","$elemChilds","menuList","constructorList","extend","menuKey","MenuConstructor","_addToToolbar","menuFind","tryChangeActive","Menus","bold","italic","underline","strikeThrough","fontName","fontSize","quote","backColor","foreColor","lineHeight","undo","redo","splitLine","isSelectEmpty","Bold","dropListConf","command","oldCatalogs","addListenerCatalog","getCatalogs","addUidForSelectionElem","getRandomCode","catalogs","reg","cmdValue","Head","core","re","low","hi","fix","offset","$linkElem","isActive","createPanel","Link","$selectedLink","inputLinkId","getRandom","inputTextId","btnOkId","btnDelId","delBtnDisplay","selectLinkElem","$text","checkLink","insertLink","selectionText","delLink","tooltip","showLinkTooltip","hideLinkTooltip","createShowHideFn","Italic","Underline","StrikeThrough","fontStyleList","fontListConf","getItemList","FontStyle","itemList","fontValue","FontStyleList","FontSize","FontSizeList","justifyClass","justifyLeft","justifyCenter","justifyRight","justifyFull","$elems","Justify","topNodeElem","$topNodeElem","getTopNodeName","$quote","delSelectNode","moveNode","$targetELem","selectElem","Quote","$topSelectElem","$newLine","$childElem","colorListConf","color","BackColor","FontColor","Video","inputIFrameId","$video","insertVideo","Image","upTriggerId","upFileId","linkUrlId","linkBtnId","fileMultipleAttr","tabsConf","$file","fileElem","click","fileList","$linkUrl","log","checkLinkImg","option","XMLHttpRequest","ontimeout","upload","onprogress","setRequestHeader","beforeResult","prevent","msg","onreadystatechange","readyState","responseText","send","$textContainer","$bar","isShow","time","timeoutId","progress","Progress","Date","getTime","pasteImgHandler","_haveTextOrHtml","pastedFiles","getPasteImgs","dataTransfer","setDragStyle","$drag","$imgTarget","createDragBox","hideDrag","firstX","clientX","firstY","clientY","boxRect","imgRect","ratio","setW","setH","$document","offEvents","mouseMoveHandler","mouseUpHandler","ev","toFixed","newImgRect","bindDragEvents","showDrag","rectW","rectH","showDargBox","parseFloat","parseFloatImplementation","$parseFloat","Infinity","trimmedString","showImgTooltip","hideImgTooltip","$selectionStartElem","Indent","lengthRegex","percentRegex","parseIndentation","unit","Number","oldPL","oldVal","newVal","Emoticon","GenerateExpressionStructure","ele","con","insertHtml","List","lineHeightMenu","allowArray","st","$selectionAll","dom","styleList","styleStr","arrayDom_a","arrayDom_b","childList","getDom","shift","setRange","styleProcessing","action","selectAllChildren","DOM","getParentNode","html_str","startDom","endDom","star","LineHeight","lineHeightList","Undo","Redo","Table","createTable","colId","rowId","insertBtnId","colValue","rowValue","createAction","$ul","$ol","tableDom","createTableHtml","rowStr","colStr","CreateTable","isMoreRowAction","showTableTooltip","getnode","isMore","selectDom","$currentRow","getRowNode","getCurrentRowIndex","htmlStr","getTableHtml","newdom","ProcessingRow","trLength","DeleteRow","getCurrentColIndex","ProcessingCol","tdLength","DeleteCol","setTheHeader","hideTableTooltip","removeAndInsertAction","domArray","generateDomAction","childNodesLenght","tr","td","cArray","th","$nodeChild","rowDom","colDom","deleteHighlightCode","preArr","formatEnterCode","replaceSpecialSymbol","insertLineCode","Code","languageId","insertCode","$codeElem","selectCodeElem","language","codeDom","getElementById","$select","highlight","highlightAuto","showCodeTooltip","hideCodeTooltip","$DomElement","$tableDOM","$imgDOM","collapsed","createSplitLine","splitLineDOM","showSplitLineTooltip","hideSplitLineTooltip","styleSettings","border","toolbarBgColor","toolbarBottomBorder","$toolbarSelector","textContainerCliheight","textElemClientHeight","_focusHandler","currentHtml","_bindChange","isChild","isToolbar","isMenu","_blurHandler","activeElement","_bindFocusAndBlur","_bindInput","strArr","lng","defaultNS","resources","iconFullScreenText","iconExitFullScreenText","classfullScreenEditor","$editorParent","$iconElem","$elemIcon","currentTarget","$targetHead","targetTop","tier","toolbar","textContainer","baseZIndex","tierName","mutations","observer","tar","attributeName","mutationsFilter","asyncSave","debounce","subtree","attributeOldValue","characterDataOldValue","callback","connect","disconnect","takeRecords","scroll","compile","reset","abs","unshift","compileType","compileValue","complieNodes","addedNodes","removedNodes","compliePosition","previousSibling","childs","removeNode","removeCache","record","oldValue","nodes","replenishNode","replenishData","reference","revokeFns","relative","restoreFns","$entries","TO_ENTRIES","TailChain","insertLast","current","rangeToObject","lastRange","updateLastRange","rangeHandle","selectionchange","handle","$contentDom","$menuDom","isCurtain","textContainerZindexValue","menuZindexValue"],"mappings":"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","file":"wangEditor.min.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 = 127);\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","module.exports = require(\"core-js-pure/stable/object/define-property\");","/**\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 | HTMLElement\n | Element\n | Document\n | HTMLCollection\n | Node\n | NodeList\n | HTMLElement[]\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\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\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\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 * 获取当前元素的尺寸和位置信息\n */\n getSizeData(): DOMRect {\n const elem = this.elems[0]\n // 可得到 bottom height left right top width 的数据\n return elem.getBoundingClientRect()\n }\n\n /**\n * 获取当前元素 nodeName\n */\n getNodeName(): string {\n const elem = this.elems[0]\n return elem.nodeName\n }\n\n /**\n * 获取当前元素节点\n */\n getNode(): Node {\n const elem = this.elems[0]\n return elem\n }\n\n /**\n * 获取当前元素可视高度\n */\n getClientHeight(): number {\n const elem = this.elems[0]\n return elem.clientHeight\n }\n\n /**\n * 获取当前元素可视宽度\n */\n // getClientWidth(): number {\n // const elem = this.elems[0]\n // return elem.clientWidth\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 next(): DomElement {\n const elem = this.elems[0]\n return $(elem.nextElementSibling)\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 * 判读是否相等\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 * 将该元素插入到某个元素后面\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 if (this.length < 1) {\n return this\n }\n\n const $parent = this.parent()\n if (editor.$textElem.equal($parent)) {\n return this\n }\n\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/object/create\");","'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","module.exports = require(\"core-js-pure/stable/object/set-prototype-of\");","module.exports = require(\"core-js-pure/stable/instance/for-each\");","/**\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","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 no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\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)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","module.exports = {};\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 = 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 fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\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 DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(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 path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\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}","module.exports = require(\"core-js-pure/stable/instance/trim\");","/**\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('mouseenter', () => {\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.showTimeoutId = window.setTimeout(() => {\n dropList.show()\n }, 200)\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 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","/**\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","// 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 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 DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","/**\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 配置格式\ntype _TabEventConf = {\n selector: string\n type: string\n fn: Function\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 const left = (rect.width - width) / 2 + rect.left - menuRect.left\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 $content.find(selector).on(type, (e: Event) => {\n e.stopPropagation()\n const needToHide = fn(e)\n // 执行完事件之后,是否要关闭 panel\n if (needToHide) {\n this.remove()\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","/**\n * @description 常量\n * @author wangfupeng\n */\n\nexport function EMPTY_FN() {}\n//用于校验图片链接是否符合规范\nexport const imgRegex = /\\.(gif|jpg|jpeg|png)$/i\n\n//用于校验是否为url格式字符串\nexport const urlRegex = /^(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-.,@?^=%&amp;:/~+#]*[\\w\\-@?^=%&amp;/~+#])?/\n","module.exports = require(\"core-js-pure/stable/instance/find\");","/**\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","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","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","module.exports = true;\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\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 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","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 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) {\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 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 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 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 }` 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 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 ? 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 if (IS_EVERY) return false; // every\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.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6)\n};\n","module.exports = require(\"core-js-pure/stable/instance/map\");","/**\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\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.getClientHeight()\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\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","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/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 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 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 /* global ActiveXObject */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\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.github.io/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","module.exports = {};\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","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","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\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/index-of\");","module.exports = require(\"core-js-pure/stable/instance/slice\");","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_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 (!PREFERRED_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 internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\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","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 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// 25.4.1.5 NewPromiseCapability(C)\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\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.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/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","// a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","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 toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(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\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\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 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\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\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.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/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 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.7.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 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 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.github.io/ecma262/#sec-object.getprototypeof\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","var anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\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 fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\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 (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\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","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = 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","'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#{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 () { /* empty */ };\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// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\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 new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","module.exports = require(\"core-js-pure/stable/instance/bind\");","module.exports = require(\"core-js-pure/stable/instance/filter\");","module.exports = require(\"core-js-pure/stable/instance/splice\");","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\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 = String(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.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var _Symbol$iterator = require(\"@babel/runtime-corejs3/core-js/symbol/iterator\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\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 } 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\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","/**\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\nexport type ResType = {\n errno: number | string\n data: string[]\n}\n\nclass UploadImg {\n private editor: Editor\n\n constructor(editor: Editor) {\n this.editor = editor\n }\n\n /**\n * 提示信息\n * @param alertInfo alert info\n * @param debugInfo debug info\n */\n private alert(alertInfo: string, debugInfo?: string): void {\n const customAlert = this.editor.config.customAlert\n if (customAlert) {\n customAlert(alertInfo)\n } else {\n window.alert(alertInfo)\n }\n\n if (debugInfo) {\n console.error('wangEditor: ' + debugInfo)\n }\n }\n\n /**\n * 往编辑区域插入图片\n * @param src 图片地址\n */\n public insertImg(src: 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 editor.cmd.do('insertHTML', `<img src=\"${src}\" style=\"max-width:100%;\"/>`)\n // 执行回调函数\n config.linkImgCallback(src)\n\n // 加载图片\n let img: any = document.createElement('img')\n img.onload = () => {\n img = null\n }\n img.onerror = () => {\n this.alert(\n t('插入图片错误'),\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 const name = file.name\n const size = file.size\n\n // chrome 低版本 name === undefined\n if (!name || !size) {\n return\n }\n\n if (/\\.(jpg|jpeg|png|bmp|gif|webp)$/i.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 this.alert(`${t('图片验证未通过')}: \\n` + errInfos.join('\\n'))\n return\n }\n if (resultFiles.length > maxLength) {\n this.alert(t('一次最多上传') + maxLength + t('张图片'))\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 this.alert(t('上传图片超时'))\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 this.alert(\n t('上传图片错误'),\n `${t('上传图片错误')},${t('服务器返回状态')}: ${xhr.status}`\n )\n if (hooks.error) hooks.error(xhr, editor)\n },\n onFail: (xhr, resultStr) => {\n this.alert(\n t('上传图片失败'),\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 this.alert(\n t('上传图片失败'),\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 this.insertImg(link)\n })\n\n // 钩子函数\n if (hooks.success) hooks.success(xhr, editor, result)\n },\n })\n if (typeof xhr === 'string') {\n // 上传被阻止\n this.alert(xhr)\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 _this.insertImg(this.result.toString())\n }\n })\n }\n }\n}\n\nexport default UploadImg\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","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 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 NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\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 store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `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","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.github.io/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 location = global.location;\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 defer, channel, port;\n\nvar run = function (id) {\n // eslint-disable-next-line no-prototype-builtins\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(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 i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\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 = /(iphone|ipod|ipad).*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","'use strict';\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.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\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\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\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\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","module.exports = require(\"core-js-pure/stable/instance/includes\");","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.REQUIRED = true;\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 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 uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar METADATA = uid('meta');\nvar id = 0;\n\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 && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\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 // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 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 // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\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 // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\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 // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n redefineAll(C.prototype, IS_MAP ? {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // 23.2.3.1 Set.prototype.add(value)\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 // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\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 // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","module.exports = require(\"core-js-pure/stable/array/is-array\");","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\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.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","module.exports = require(\"core-js-pure/stable/set-timeout\");","/**\n * @description 样式配置\n * @author wangfupeng\n */\n\nexport default {\n zIndex: 10000,\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 // 剔除多余的标签、属性\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\");","/**\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 public showTimeoutId: number\n\n constructor(menu: DropListMenu, conf: DropListConf) {\n this.hideTimeoutId = 0\n this.showTimeoutId = 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', () => {\n clickHandler(value)\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.getSizeData().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 if (this.showTimeoutId) {\n // 清除之前的定时显示\n clearTimeout(this.showTimeoutId)\n }\n\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) {\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 检查选区是否在代码中,即菜单是否应该 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) {\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","/**\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.github.io/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 parent = require('../../es/object/create');\n\nmodule.exports = parent;\n","require('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n return Object.create(P, D);\n};\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.github.io/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\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.github.io/ecma262/#sec-object.defineproperties\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 createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\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 .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\", \"\"]);\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}\\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-tooltip {\\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 position: absolute;\\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 text-align: center;\\n}\\n.w-e-menu .w-e-panel-container .w-e-up-img-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 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');\n\nmodule.exports = parent;\n","require('../../modules/es.aggregate-error');\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');\nrequire('../../modules/web.dom-collections.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');\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 that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', String(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$({ 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 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 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","'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 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_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 PromiseConstructor = NativePromise;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar $fetch = getBuiltIn('fetch');\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 Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n if (!GLOBAL_CORE_JS_PROMISE) {\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 (V8_VERSION === 66) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;\n }\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromiseConstructor.prototype['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(PromiseConstructor)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = PromiseConstructor.resolve(1);\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n return !(promise.then(function () { /* empty */ }) instanceof FakePromise);\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 // eslint-disable-next-line no-unused-vars\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(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/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.github.io/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') {\n nativeThen = NativePromise.prototype.then;\n\n // wrap native Promise#then for native async functions\n redefine(NativePromise.prototype, '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 // wrap fetch result\n if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input /* , init */) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));\n }\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.github.io/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.github.io/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.github.io/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.github.io/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","'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.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\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 no-throw-literal\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 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_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 if (!IS_IOS && !IS_NODE && 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 (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\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 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","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 $ = 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://github.com/tc39/proposal-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://github.com/tc39/proposal-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.github.io/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// patch native Promise.prototype for native async functions\nif (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {\n redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);\n}\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(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.github.io/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","'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 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.github.io/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.github.io/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.github.io/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.github.io/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\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","/**\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 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'\n\n// 创建菜单的 class\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\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\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 if (toolbarSelector == null) {\n throw new Error('错误:初始化编辑器时候未传入任何参数,请查阅文档')\n }\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\n const { disable, enable } = disableInit(this)\n this.disable = disable\n this.enable = enable\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 /**\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\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\nexport default Editor\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\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.github.io/ecma262/#sec-array.prototype.foreach\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');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.github.io/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\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.github.io/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\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.github.io/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","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');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/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 correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~String(requireObjectCoercible(this))\n .indexOf(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.github.io/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/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');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n// Edge 14- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\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/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');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\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.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\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/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';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\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/map');\n\nmodule.exports = parent;\n","require('../../modules/es.map');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.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.github.io/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 return Object.isExtensible(Object.preventExtensions({}));\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.github.io/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/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');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\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.github.io/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","module.exports = require(\"core-js-pure/features/symbol/iterator\");","var parent = require('../../es/symbol/iterator');\n\nmodule.exports = parent;\n","require('../../modules/es.symbol.iterator');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","module.exports = require(\"core-js-pure/features/symbol\");","var parent = require('../../es/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.observable');\nrequire('../../modules/esnext.symbol.pattern-match');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.replace-all');\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.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n concat: function concat(arg) { // eslint-disable-line no-unused-vars\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 USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\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 isSymbol = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPrimitive(P, true);\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 = toPrimitive(V, true);\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 = toPrimitive(P, true);\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.github.io/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 : String(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.github.io/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = String(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.github.io/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.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/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.github.io/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\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.github.io/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.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyNames = 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 nativeGetOwnPropertyNames(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 : nativeGetOwnPropertyNames(toIndexedObject(it));\n};\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.github.io/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.github.io/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.github.io/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.github.io/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\ndefineWellKnownSymbol('matchAll');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.github.io/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.github.io/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.github.io/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.github.io/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.github.io/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.github.io/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.github.io/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.github.io/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\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.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","var 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","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\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","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');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/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 || !USES_TO_LENGTH }, {\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","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.github.io/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","var global = require('../internals/global');\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.github.io/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(String(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","/**\n * @description 编辑器配置\n * @author wangfupeng\n */\n\nimport menusConfig, { EmotionsType, FontSizeConfType, IndentationType } 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'\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 fontNames: string[]\n lineHeights: string[]\n indentation: IndentationType\n fontSizes: FontSizeConfType\n colors: string[]\n emotions: EmotionsType[]\n zIndex: number\n onchange: Function\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\n placeholder: string\n zIndexFullScreen: number\n showFullScreen: boolean\n showLinkImg: boolean\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 customAlert: Function | null\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\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 //链接校验的配置函数\n {\n linkCheck: function (text: string, link: string): string | boolean {\n return true\n },\n },\n //网络图片校验的配置函数\n {\n linkImgCheck: function (src: string): string | boolean {\n return true\n },\n }\n)\n\nexport default defaultConfig\n","module.exports = require(\"core-js-pure/stable/object/assign\");","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.github.io/ecma262/#sec-object.assign\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\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(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 no-undef\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\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} : nativeAssign;\n","/**\n * @description 菜单配置\n * @author wangfupeng\n */\n\nconst SINA_PATH1 = 'http://img.t.sinajs.cn/t4/appstyle/expression/ext/normal'\nconst SINA_PATH2 = 'http://img.t.sinajs.cn/t35/style/images/common/face/ext/normal'\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// indent\nexport interface IndentationOptions {\n value: number\n unit: string\n}\nexport type IndentationType = string | IndentationOptions\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 '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\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 '#eeece0',\n '#1c487f',\n '#4d80bf',\n '#c24f4a',\n '#8baa4a',\n '#7b5ba1',\n '#46acc8',\n '#f9963b',\n '#ffffff',\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: 'image',\n // content -> 数组\n content: [\n {\n alt: '[坏笑]',\n src: `${SINA_PATH1}/50/pcmoren_huaixiao_org.png`,\n },\n {\n alt: '[舔屏]',\n src: `${SINA_PATH1}/40/pcmoren_tian_org.png`,\n },\n {\n alt: '[污]',\n src: `${SINA_PATH1}/3c/pcmoren_wu_org.png`,\n },\n ],\n },\n {\n // tab 的标题\n title: '新浪',\n // type -> 'emoji' / 'image'\n type: 'image',\n // content -> 数组\n content: [\n {\n src: `${SINA_PATH2}/7a/shenshou_thumb.gif`,\n alt: '[草泥马]',\n },\n {\n src: `${SINA_PATH2}/60/horse2_thumb.gif`,\n alt: '[神马]',\n },\n {\n src: `${SINA_PATH2}/bc/fuyun_thumb.gif`,\n alt: '[浮云]',\n },\n ],\n },\n {\n // tab 的标题\n title: 'emoji',\n // type -> 'emoji' / 'image'\n type: 'emoji',\n // content -> 数组\n content: '😀 😃 😄 😁 😆 😅 😂 😊 😇 🙂 🙃 😉 😓 😪 😴 🙄 🤔 😬 🤐'.split(/\\s/),\n },\n {\n // tab 的标题\n title: '手势',\n // type -> 'emoji' / 'image'\n type: 'emoji',\n // content -> 数组\n content: [\n '🙌',\n '👏',\n '👋',\n '👍',\n '👎',\n '👊',\n '✊',\n '️👌',\n '✋',\n '👐',\n '💪',\n '🙏',\n '️👆',\n '👇',\n '👈',\n '👉',\n '🖕',\n '🖐',\n '🤘',\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","/**\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\nexport default {\n onchangeTimeout: 200,\n\n onchange: EMPTY_FN,\n onfocus: EMPTY_FN,\n onblur: EMPTY_FN,\n\n onCatalogChange: null,\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 showLinkImg: true,\n\n // 插入图片成功之后的回调函数\n linkImgCallback: EMPTY_FN,\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 * @description 默认常量配置\n * @author xiaokyo\n */\n\nexport default {\n focus: true,\n height: 300,\n placeholder: '请输入正文',\n zIndexFullScreen: 10000,\n showFullScreen: true,\n}\n","export default {\n lang: 'zh-CN',\n languages: {\n 'zh-CN': {\n wangEditor: {\n 插入: '插入',\n 默认: '默认',\n 创建: '创建',\n 修改: '修改',\n 如: '如',\n 请输入正文: '请输入正文',\n menus: {\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 link: {\n 链接: '链接',\n 链接文字: '链接文字',\n 取消链接: '取消链接',\n 查看链接: '查看链接',\n },\n video: {\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 en: {\n wangEditor: {\n 插入: 'insert',\n 默认: 'default',\n 创建: 'create',\n 修改: 'edit',\n 如: 'like',\n 请输入正文: 'please enter the text',\n menus: {\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 默认: 'default',\n 新浪: 'sina',\n emoji: 'emoji',\n 手势: 'gesture',\n },\n image: {\n 图片链接: 'image link',\n 上传图片: 'upload image',\n 网络图片: 'network image',\n },\n link: {\n 链接: 'link',\n 链接文字: 'link text',\n 取消链接: 'unlink',\n 查看链接: 'view links',\n },\n video: {\n 插入视频: 'insert 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 },\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 selection range API\n * @author wangfupeng\n */\nimport $, { DomElement } from '../utils/dom-core'\nimport { UA } from '../utils/util'\nimport Editor from './index'\nimport SelectionRangeTopNodes from './selection-range-top-nodes/index'\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) {\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() === '<p><br></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 * 根据 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\n // 存储 range\n this.saveRange(range)\n }\n\n /**\n * 获取 当前 选取范围的 顶级(段落) 元素\n * @param $editor\n */\n public getSelectionRangeTopNodes(editor: Editor): DomElement[] {\n const item = new SelectionRangeTopNodes(editor)\n item.init()\n return item.getSelectionNodes()\n }\n\n /**\n * 移动光标位置\n * @param {Node} node 元素节点\n * @param {Boolean} toStart 为true光标在开始位置 为false在结束位置 默认在结束位置\n */\n public moveCursor(node: Node, toStart: boolean = false) {\n const range = this.getRange()\n const pos = toStart ? 0 : node.childNodes.length\n\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\nexport default SelectionAndRange\n","/**\n * @description 选取范围所有顶级(段落)节点\n * @author tonghan\n */\n\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../index'\n\n// 构造函数\nclass SelectionRangeTopNodes {\n // 定义属性\n editor: Editor\n $nodeList: DomElement[]\n $startElem: DomElement | undefined\n $endElem: DomElement | undefined\n\n /**\n * 构造函数\n * @param editor\n */\n constructor(editor: Editor) {\n // 初始化属性\n this.editor = editor\n this.$nodeList = []\n this.$startElem = $(editor.selection.getSelectionStartElem()).getNodeTop(this.editor)\n this.$endElem = $(editor.selection.getSelectionEndElem()).getNodeTop(this.editor)\n }\n\n /**\n * 初始化\n */\n public init(): void {\n this.recordSelectionNodes($(this.$startElem))\n }\n\n /**\n * 添加 节点 到nodeList\n * @param $node 节点\n */\n private addNodeList($node: DomElement | HTMLElement): void {\n this.$nodeList.push($($node))\n }\n\n /**\n * 是否是 选区结束 节点\n * @param $node 节点\n */\n private isEndElem($node: DomElement): boolean | undefined {\n return this.$endElem?.equal($node)\n }\n\n /**\n * 获取当前节点的下一个兄弟节点\n * @param $node 节点\n */\n private getNextSibling($node: DomElement): DomElement {\n return $($node.elems[0].nextSibling)\n }\n\n /**\n * 记录节点 - 从选区开始节点开始 一直到匹配到选区结束节点为止\n * @param $node 节点\n */\n private recordSelectionNodes($node: DomElement): void {\n const $elem = $node.getNodeTop(this.editor)\n if ($elem.length > 0) {\n this.addNodeList($elem)\n if (!this.isEndElem($elem)) {\n this.recordSelectionNodes(this.getNextSibling($elem))\n }\n }\n }\n\n /**\n * 获取 选中节点列表\n */\n public getSelectionNodes(): DomElement[] {\n return this.$nodeList\n }\n}\n\n/**\n * 导出\n */\nexport default SelectionRangeTopNodes\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 range.insertNode($(html).elems[0])\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'\n\n/** 按键函数 */\ntype KeyBoardHandler = (event: KeyboardEvent) => unknown\n/** 普通事件回调 */\ntype EventHandler = (event: Event) => unknown\n// 各个事件钩子函数\ntype TextEventHooks = {\n changeEvents: (() => void)[] // 内容修改时\n dropEvents: ((event: DragEvent) => unknown)[]\n clickEvents: EventHandler[]\n keyupEvents: KeyBoardHandler[]\n /** tab 键(keyCode === )Up 时 */\n tabUpEvents: KeyBoardHandler[]\n /** tab 键(keyCode === 9)Down 时 */\n tabDownEvents: KeyBoardHandler[]\n /** enter 键(keyCode === 13)up 时 */\n enterUpEvents: KeyBoardHandler[]\n /** enter 键(keyCode === 13)down 时 */\n enterDownEvents: KeyBoardHandler[]\n /** 删除键(keyCode === 8)up 时 */\n deleteUpEvents: KeyBoardHandler[]\n /** 删除键(keyCode === 8)down 时 */\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: ((e: DomElement) => void)[]\n /** 每个菜单被点击时,按理说这个不属于 txt 的,先暂时在这放着吧 */\n menuClickEvents: (() => void)[]\n /** droplist 菜单悬浮事件。暂时放这里 */\n dropListMenuHoverEvents: (() => void)[]\n /** 点击分割线时 */\n splitLineEvents: ((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 changeEvents: [],\n dropEvents: [],\n clickEvents: [],\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 }\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 (!html || html === ' ') $placeholder.show()\n }\n\n /**\n * 清空内容\n */\n public clear(): void {\n this.html('<p><br></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 html = html.replace(/<p><\\/p>/gim, '') // 去掉空行\n html = html.replace(/<p><br\\/?><\\/p>$/gim, '') // 去掉最后的 <p><br><p>\n\n /**\n * 这里的代码为了处理火狐多余的空行标签,但是强制删除空行标签会带来其他问题\n * html()方法返回的的值,\"<p><br></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 return html\n }\n\n // 有 val ,则是设置 html\n val = val.trim()\n if (val === '') {\n val = `<p><br></p>`\n }\n if (val.indexOf('<') !== 0) {\n // 内容用 p 标签包裹\n val = `<p>${val}</p>`\n }\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 const $textElem = editor.$textElem\n if (html.indexOf('<') !== 0) {\n // 普通字符串,用 <p> 包裹\n html = `<p>${html}</p>`\n }\n $textElem.append($(html))\n\n // 初始化选区,将光标定位到内容尾部\n editor.initSelection()\n }\n\n /**\n * 每一步操作,都实时保存选区范围\n */\n private _saveRange(): void {\n const editor = this.editor\n const $textElem = editor.$textElem\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 $textElem.on('mousedown', () => {\n // mousedown 状态下,鼠标滑动到编辑区域外面,也需要保存选区\n $textElem.on('mouseleave', saveRange)\n })\n\n $textElem.on('mouseup', () => {\n const selection = editor.selection\n const range = selection.getRange()\n\n if (range == null) return\n\n const { startOffset, endOffset } = range\n let endContainer: Node | undefined = range?.endContainer\n // 修复当selection结束时,点击编辑器内部,保存选区异常的情况\n if (startOffset !== endOffset && endContainer != null) {\n range?.setStart(endContainer, endOffset)\n }\n\n saveRange()\n\n // 在编辑器区域之内完成点击,取消鼠标滑动到编辑区外面的事件\n $textElem.off('mouseleave', saveRange)\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 // delete 键 up 时 hooks\n $textElem.on('keyup', (e: KeyboardEvent) => {\n if (e.keyCode !== 8) 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) 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 //处理图片点击 判断是否是表情 根据 不存在class或者className!==eleImg、没有alt属性\n if (\n $target.getNodeName() === 'IMG' &&\n (!$target.elems[0].getAttribute('class') ||\n $target.elems[0].getAttribute('class') !== 'eleImg') &&\n !$target.elems[0].getAttribute('alt')\n ) {\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: Event) => {\n // 存储元素\n let $dom: DomElement | null = null\n\n const target = e.target as HTMLElement\n\n //获取最祖父元素\n $dom = $(target).parentUntil('TABLE', target)\n\n // 没有table范围内,则返回\n if (!$dom) return\n\n const tableClickEvents = eventHooks.tableClickEvents\n tableClickEvents.forEach(fn => fn($dom as DomElement))\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}\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');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\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.github.io/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.github.io/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 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 // 删除时,保留 <p><br></p>\n deleteToKeepP(editor, eventHooks.deleteUpEvents, eventHooks.deleteDownEvents)\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 $, { 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 = $('<p><br></p>')\n $p.insertBefore($selectionElem)\n editor.selection.createRangeByElem($p, 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($selectionElem)\n return\n }\n\n if (!$parentElem.equal($textElem)) {\n // 不是顶级标签\n return\n }\n\n const nodeName = $selectionElem.getNodeName()\n if (nodeName === 'P') {\n // 当前的标签是 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 删除时保留 <p><br></p>\n * @author wangfupeng\n */\n\nimport Editor from '../../editor/index'\nimport $ from '../../utils/dom-core'\n\n/**\n * 删除时保留 <p><br></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 txtHtml = $textElem.html().toLowerCase().trim()\n\n // firefox 时用 txtHtml === '<br>' 判断,其他用 !txtHtml 判断\n if (!txtHtml || txtHtml === '<br>') {\n // 内容空了\n const $p = $('<p><br/></p>')\n $textElem.html(' ') // 一定要先清空,否则在 firefox 下有问题\n $textElem.append($p)\n editor.selection.createRangeByElem($p, false, true)\n editor.selection.restoreSelection()\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 === '<p><br></p>') {\n // 最后剩下一个空行,就不再删除了\n e.preventDefault()\n return\n }\n }\n deleteDownEvents.push(downFn)\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'\n\n/**\n * 格式化html\n * @param val 粘贴的html\n * @author liuwei\n */\nfunction formatHtml(val: string) {\n let pasteText = val\n // div 全部替换为 p 标签\n pasteText = pasteText.replace(/<div>/gim, '<p>').replace(/<\\/div>/gim, '</p>')\n // 不允许空行,放在最后\n pasteText = pasteText.replace(/<p><\\/p>/gim, '<p><br></p>')\n // 去除''\n return pasteText.trim()\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\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\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 // 当前节点顶级可能没有\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 if (urlRegex.test(pasteText)) {\n return editor.cmd.do(\n 'insertHTML',\n `<a href=\"${pasteText}\" target=\"_blank\">${pasteText}</a>`\n )\n }\n\n // table 中(td、th),待开发。。。\n\n if (!pasteHtml) {\n return\n }\n\n try {\n // firefox 中,获取的 pasteHtml 可能是没有 <ul> 包裹的 <li>\n // 因此执行 insertHTML 会报错\n if (pasteTextHandle && isFunction(pasteTextHandle)) {\n // 用户自定义过滤处理粘贴内容\n pasteHtml = '' + (pasteTextHandle(pasteHtml) || '') // html\n }\n editor.cmd.do('insertHTML', `${formatHtml(pasteHtml)}`)\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 str = str.trim()\n if (!str) return\n\n // 忽略的标签\n if (isIgnoreTag(CUR_TAG, ignoreImg)) {\n return\n }\n\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 },\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])\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');\n\nmodule.exports = parent;\n","require('../../modules/es.set');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/web.dom-collections.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.github.io/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) {\n attrs.push(oThis.parseAttribute(sTagName, a0, a1, a2, a3, a4, a5, a6))\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(nodeList: NodeListType): DomElement {\n // 设置一个父节点存储所有子节点\n let $root = $(`<div></div>`)\n\n // 遍历节点JSON\n nodeList.forEach(item => {\n let $elem: DomElement = $('')\n\n // 当为文本节点时\n if (typeof item === 'string') {\n $elem = $(`<span>${item}</span>`)\n }\n\n // 当为普通节点时\n if (typeof item === 'object') {\n $elem = $(`<${item.tag}></${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 const $elemChilds = getHtmlByNodeList(item.children).children()\n $elemChilds && $elem.append($elemChilds)\n }\n }\n\n $root.append($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'\n\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 config.menus.forEach(menuKey => {\n const MenuConstructor = this.constructorList[menuKey] // 暂用 any ,后面再替换\n if (MenuConstructor == null || typeof MenuConstructor !== 'function') {\n // 必须是 class\n return\n }\n // 创建 menu 实例,并放到 menuList 中\n const m = new MenuConstructor(this.editor)\n m.key = menuKey\n this.menuList.push(m)\n })\n\n // 渲染 DOM\n this._addToToolbar()\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","/**\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'\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}\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\">\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","var parent = require('../../es/object/set-prototype-of');\n\nmodule.exports = parent;\n","require('../../modules/es.object.set-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.setPrototypeOf;\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n","/**\n * @description 标题\n * @author wangfupeng\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 { getRandomCode } from '../../utils/util'\nimport { TCatalog } from '../../config/events'\n\nclass Head extends DropListMenu implements MenuActive {\n oldCatalogs: TCatalog[] | undefined\n constructor(editor: Editor) {\n const $elem = $('<div class=\"w-e-menu\"><i class=\"w-e-icon-header\"></i></div>')\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 return\n }\n\n editor.cmd.do('formatBlock', value)\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 * 尝试改变菜单激活(高亮)状态\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\nif (!core.JSON) core.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars\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 // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars\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 $ 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'\n\nclass Link extends PanelMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $('<div class=\"w-e-menu\"><i class=\"w-e-icon-link\"></i></div>')\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 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'\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 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 alert(check)\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 id=\"${btnOkId}\" class=\"right\">\n ${editor.i18next.t('插入')}\n </button>\n <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 const $link = $('#' + inputLinkId)\n const $text = $('#' + inputTextId)\n let link = $link.val().trim()\n let text = $text.val().trim()\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 },\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 * @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 // 用文字,替换链接\n const selectionText = $link.text()\n editor.cmd.do('insertHTML', '<span>' + selectionText + '</span>')\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\">\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\">\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\">\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\">\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 editor.cmd.do('fontName', value)\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 { DropListItem } from '../menu-constructors/DropList'\n\n/**\n * 封装的一个字体菜单列表数据的组装对象,\n * 原因是因为在constructor函数中,直接执行此流程,会让代码量看起来较多,\n * 如果要在constructor调用外部函数,个人目前发现会有错误提示,\n * 因此,想着顺便研究实践下ts,遍创建了这样一个类\n */\nclass FontStyleList {\n private itemList: DropListItem[]\n\n constructor(list: string[]) {\n this.itemList = []\n list.forEach(fontValue => {\n this.itemList.push({\n $elem: $(`<p style=\"font-family:'${fontValue}'\">${fontValue}</p>`),\n value: fontValue,\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\">\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 editor.cmd.do('fontSize', value)\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\nclass Justify extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $('<div class=\"w-e-menu\"><i class=\"w-e-icon-paragraph-left\"></i></div>')\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: 'justifyLeft',\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: 'justifyCenter',\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: 'justifyRight',\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: 'justifyFull',\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 selection.saveRange()\n // 定义对齐方式的type\n type justifyType = {\n [key: string]: string\n }\n // 数据项\n const justifyClass: justifyType = {\n justifyLeft: 'left',\n justifyCenter: 'center',\n justifyRight: 'right',\n justifyFull: 'justify',\n }\n // 获取顶级元素\n const $elems = editor.selection.getSelectionRangeTopNodes(editor)\n // 选区等于textElem时表示选择了多个段落\n if ($selectionElem && editor.$textElem.equal($selectionElem)) {\n // 获取在css中对应style的值\n const justifyValue = justifyClass[value]\n $elems.forEach((el: DomElement) => {\n el.css('text-align', justifyValue)\n })\n } else {\n // 如果单行的使用execcommand实现\n editor.cmd.do(value, value)\n }\n //恢复选区\n selection.restoreSelection()\n }\n\n /**\n * 尝试改变菜单激活(高亮)状态\n * 默认左对齐,若选择其他对其方式对active进行高亮否则unActive\n * ?考虑优化的话 是否可以对具体选中的进行高亮\n */\n public tryChangeActive(): void {\n // const editor = this.editor\n // let isjustify = ['justifyCenter', 'justifyRight'].some(e => editor.cmd.queryCommandState(e))\n // if (isjustify) {\n // this.active()\n // } else {\n // this.unActive()\n // }\n }\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'\n\nclass Quote extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\">\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 const topNodeElem: DomElement[] = editor.selection.getSelectionRangeTopNodes(editor)\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 const $quote = createQuote(topNodeElem)\n $quote.insertAfter($topNodeElem)\n this.delSelectNode(topNodeElem)\n const moveNode = $quote.childNodes()?.last().getNode() as Node\n // 兼容firefox(firefox下空行情况下选区会在br后,造成自动换行的问题)\n moveNode.textContent\n ? editor.selection.moveCursor(moveNode)\n : editor.selection.moveCursor(moveNode, true)\n // 即时更新btn状态\n this.tryChangeActive()\n // 防止最后一行无法跳出\n $(`<p><br></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(editor)[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(editor)[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 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(editor)[0]\n // 对quote的enter进行特殊处理\n //最后一行为<p><br></p>时再按会出跳出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 = $('<p><br></p>')\n $newLine.insertAfter($topSelectElem)\n // 将光标移动br前面\n editor.selection.moveCursor($newLine.getNode(), true)\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'\n\nclass BackColor extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\">\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 editor.cmd.do('backColor', value)\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\">\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 editor.cmd.do('foreColor', value)\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'\n\nclass Video extends PanelMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\">\n <i class=\"w-e-icon-play\"></i>\n </div>`\n )\n super($elem, 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 } from '../menu-constructors/Panel'\nimport { getRandom } from '../../utils/util'\nimport $ from '../../utils/dom-core'\n\nexport default function (editor: Editor, video: string): PanelConf {\n // panel 中需要用到的id\n const inputIFrameId = getRandom('input-iframe')\n const btnOkId = getRandom('btn-ok')\n\n /**\n * 插入链接\n * @param iframe html标签\n */\n function insertVideo(video: string): void {\n editor.cmd.do('insertHTML', video + '<p><br></p>')\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.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 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\n insertVideo(video)\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 wangfupeng\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 Image extends PanelMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $('<div class=\"w-e-menu\"><i class=\"w-e-icon-image\"></i></div>')\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 Image\n","/**\n * @description image 菜单 panel tab 配置\n * @author wangfupeng\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 UploadImg from './upload-img'\nimport { imgRegex } from '../../utils/const'\n\nexport default function (editor: Editor): PanelConf {\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 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): boolean {\n //编辑器进行正常校验,图片合规则使指针为true,不合规为false\n let flag = true\n if (!imgRegex.test(src)) {\n flag = false\n }\n\n //查看开发者自定义配置的返回值\n const check = config.linkImgCheck(src)\n if (check === undefined) {\n //用户未能通过开发者的校验,且开发者不希望编辑器提示用户\n if (flag === false) console.log(t('您刚才插入的图片链接未通过编辑器校验', 'validate.'))\n } else if (check === true) {\n //用户通过了开发者的校验\n if (flag === false) {\n alert(\n `${t('您插入的网络图片无法识别', 'validate.')},${t(\n '请替换为支持的图片类型',\n 'validate.'\n )}:jpg | png | gif ...`\n )\n } else return true\n } else {\n //用户未能通过开发者的校验,开发者希望我们提示这一字符串\n alert(check)\n }\n return false\n }\n\n // tabs 配置 -----------------------------------------\n const fileMultipleAttr = config.uploadImgMaxLength === 1 ? '' : 'multiple=\"multiple\"'\n const tabsConf: PanelTabConf[] = [\n // first tab\n {\n // 标题\n title: t('上传图片'),\n // 模板\n tpl: `<div class=\"w-e-up-img-container\">\n <div id=\"${upTriggerId}\" class=\"w-e-up-btn\">\n <i class=\"w-e-icon-upload2\"></i>\n </div>\n <div style=\"display:none;\">\n <input id=\"${upFileId}\" type=\"file\" ${fileMultipleAttr} accept=\"image/jpg,image/jpeg,image/png,image/gif,image/bmp\"/>\n </div>\n </div>`,\n // 事件绑定\n events: [\n // 触发选择图片\n {\n selector: '#' + upTriggerId,\n type: 'click',\n fn: () => {\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]\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 uploadImg.uploadImg(fileList)\n }\n\n // 返回 true 可关闭 panel\n return true\n },\n },\n ],\n }, // first tab end\n // second tab\n {\n title: t('网络图片'),\n tpl: `<div>\n <input\n id=\"${linkUrlId}\"\n type=\"text\"\n class=\"block\"\n placeholder=\"${t('图片链接')}\"/>\n </td>\n <div class=\"w-e-button-container\">\n <button id=\"${linkBtnId}\" class=\"right\">${t('插入', '')}</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 if (!checkLinkImg(url)) return\n\n //插入图片url\n uploadImg.insertImg(url)\n // 返回 true 表示函数执行结束之后关闭 panel\n return true\n },\n },\n ],\n }, // second tab end\n ]\n // tabs end\n\n // 最终的配置 -----------------------------------------\n const conf: PanelConf = {\n width: 300,\n height: 0,\n tabs: [],\n }\n // 显示“上传图片”\n if (\n window.FileReader &&\n (config.uploadImgShowBase64 || config.uploadImgServer || config.customUploadImg)\n ) {\n conf.tabs.push(tabsConf[0])\n }\n // 显示“插入网络图片”\n if (config.showLinkImg) {\n conf.tabs.push(tabsConf[1])\n }\n\n return conf\n}\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","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.github.io/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 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'\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\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 * 粘贴图片事件方法\n * @param e 事件参数\n */\nfunction pasteImgHandler(e: ClipboardEvent, editor: Editor): void {\n if (_haveTextOrHtml(editor, e)) {\n // 粘贴过来的有 text 或者 html ,则不执行粘贴图片逻辑\n return\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 // 绑定 paste 事件\n editor.txt.eventHooks.pasteEvents.push((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 */\nfunction 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.github.io/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != parseFloatImplementation }, {\n parseFloat: parseFloatImplementation\n});\n","var global = require('../internals/global');\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.github.io/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(String(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 */\nfunction createShowHideFn(editor: Editor) {\n let tooltip: Tooltip | null\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 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","/**\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\">\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(editor)\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$/i\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\">\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\" 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","/**\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'\n\nclass List extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\">\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: 'insertUnorderedList',\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: 'insertOrderedList',\n },\n ],\n clickHandler: (value: string) => {\n // 注意 this 是指向当前的 List 对象\n this.command(value)\n },\n }\n\n super($elem, editor, dropListConf)\n }\n\n public command(value: string): void {\n const editor = this.editor\n const $textElem = editor.$textElem\n editor.selection.restoreSelection()\n\n // 判断是否已经执行了命令\n if (editor.cmd.queryCommandState(value)) {\n return\n }\n\n //禁止在table中添加列表\n let $selectionElem = $(editor.selection.getSelectionContainerElem())\n let $dom = $($selectionElem.elems[0]).parentUntil('TABLE', $selectionElem.elems[0])\n if ($dom && $($dom.elems[0]).getNodeName() === 'TABLE') {\n return\n }\n\n editor.cmd.do(value)\n\n // 验证列表是否被包裹在 <p> 之内\n if ($selectionElem.getNodeName() === 'LI') {\n $selectionElem = $selectionElem.parent()\n }\n\n if (/^ol|ul$/i.test($selectionElem.getNodeName()) === false) {\n return\n }\n\n if ($selectionElem.equal($textElem)) {\n // 证明是顶级标签,没有被 <p> 包裹\n return\n }\n\n const $parent = $selectionElem.parent()\n if ($parent.equal($textElem)) {\n // $parent 是顶级标签,不能删除\n return\n }\n\n $selectionElem.insertAfter($parent)\n $parent.remove()\n\n // 恢复选区\n editor.selection.restoreSelection()\n this.tryChangeActive()\n }\n\n public tryChangeActive(): void {}\n}\n\nexport default List\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\">\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 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 if (isIE) {\n // ie下禁止多行操作 避免多行造成除第一行外的段落内容都被删除\n return\n }\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 = ''\n if ($(item).getNodeName() === 'P') {\n //判断是否 点击默认\n value\n ? (styleStr = this.styleProcessing(styleList) + `line-height:${value};`)\n : (styleStr = this.styleProcessing(styleList))\n st =\n st +\n `<${$(item).getNodeName().toLowerCase()} style=\"${styleStr}\">${\n item.innerHTML\n }</${$(item).getNodeName().toLowerCase()}>`\n } else {\n styleStr = this.styleProcessing(styleList)\n st =\n st +\n `<${$(item).getNodeName().toLowerCase()} style=\"${styleStr}\">${\n item.innerHTML\n }</${$(item).getNodeName().toLowerCase()}>`\n }\n })\n this.action(st, editor)\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叠加\n if ($(dom).getNodeName() === 'BLOCKQUOTE') {\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 = 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\">\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 this.editor.history.revoke()\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\">\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 this.editor.history.restore()\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 = $('<div class=\"w-e-menu\"><i class=\"w-e-icon-table2\"></i></div>')\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\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 id=\"${insertBtnId}\" class=\"right\">${t('插入')}</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 (colValue && rowValue) {\n createTable.createAction(rowValue, colValue)\n }\n // 返回 true 表示函数执行结束之后关闭 panel\n return true\n },\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","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 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]).parentUntil('UL', $selectionElem.elems[0])\n const $ol = $($selectionElem.elems[0]).parentUntil('OL', $selectionElem.elems[0])\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><p><br></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'\n\n/**\n * 绑定事件\n * @param editor 编辑器实例\n */\nfunction bindEvent(editor: Editor): void {\n //Tooltip\n bindTooltip(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'\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', '<p><br></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 // 选中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 .childNodes[0].childNodes.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 = '<p><br></p>'\n } else {\n newdom = getnode.getTableHtml(\n operatingEvent.DeleteRow($(htmlStr), index).elems[0]\n )\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\n let newdom: string = getnode.getTableHtml(\n operatingEvent.ProcessingCol($(htmlStr), index).elems[0]\n )\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 tdLength: number = operatingEvent.DeleteCol($(htmlStr), index).elems[0]\n .childNodes[0].childNodes[0].childNodes.length\n //生成新的table\n let newdom: string = ''\n // 选中table\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n\n if (tdLength === 1) {\n newdom = '<p><br></p>'\n } else {\n newdom = getnode.getTableHtml(\n operatingEvent.DeleteCol($(htmlStr), index).elems[0]\n )\n }\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 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 // 选中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 // 选中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","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: Node[] = Array.prototype.slice.apply($dom.childNodes)\n //列的数量\n const childNodesLenght = domArray[0].childNodes.length\n //创建新tr\n let tr = document.createElement('tr')\n for (let i = 0; i < childNodesLenght; 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: Node[] = Array.prototype.slice.apply($dom.childNodes)\n //创建td\n for (let i = 0; i < domArray.length; i++) {\n let cArray: Node[] = []\n //取出所有的列\n domArray[i].childNodes.forEach(item => {\n cArray.push(item)\n })\n //移除行的旧的子节点\n while (domArray[i].childNodes.length !== 0) {\n domArray[i].removeChild(domArray[i].childNodes[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: Node[] = Array.prototype.slice.apply($dom.childNodes)\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: Node[] = Array.prototype.slice.apply($dom.childNodes)\n //创建td\n for (let i = 0; i < domArray.length; i++) {\n let cArray: Node[] = []\n //取出所有的列\n domArray[i].childNodes.forEach(item => {\n cArray.push(item)\n })\n //移除行的旧的子节点\n while (domArray[i].childNodes.length !== 0) {\n domArray[i].removeChild(domArray[i].childNodes[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: Node[] = Array.prototype.slice.apply($dom.childNodes)\n //列的数量\n const childNodesLenght = domArray[_index].childNodes\n //创建新tr\n let tr = document.createElement('tr')\n for (let i = 0; i < childNodesLenght.length; i++) {\n //替换td为th\n const th = document.createElement(type)\n childNodesLenght[i].childNodes.forEach(item => {\n th.appendChild(item)\n })\n tr.appendChild(th)\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: ChildNode, domArray: Node[]) {\n //移除所有的旧的子节点\n while ($dom.childNodes.length !== 0) {\n $dom.removeChild($dom.childNodes[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): ChildNode {\n let $dom: ChildNode = $node.elems[0].childNodes[0]\n if ($dom.nodeName === 'COLGROUP') {\n $dom = $node.elems[0].childNodes[$node.elems[0].childNodes.length - 1]\n }\n return $dom\n}\n\nexport default {\n ProcessingRow,\n ProcessingCol,\n DeleteRow,\n DeleteCol,\n setTheHeader,\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.childNodes[0]\n //粘贴的table 最后一个节点才是tbody\n if ($nodeChild.nodeName === 'COLGROUP') {\n $nodeChild = $node.childNodes[$node.childNodes.length - 1]\n }\n $nodeChild.childNodes.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 colDom.elems[0].childNodes.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 代码 菜单\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 = $('<div class=\"w-e-menu\"><i class=\"w-e-icon-terminal\"></i></div>')\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'\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 * @param code 链接\n */\n function insertCode(text: string): void {\n // 选区处于链接中,则选中整个菜单,再执行 insertHTML\n let active = isActive(editor)\n\n if (active) {\n selectCodeElem()\n }\n\n editor.cmd.do('insertHTML', text)\n\n const $code = editor.selection.getSelectionStartElem()\n const $codeElem = $code?.getNodeTop(editor)\n\n // 通过dom操作添加换行标签\n // @ts-ignore\n $('<p><br></p>').insertAfter($codeElem)\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 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 type=\"${languageType}\"><code>${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'\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 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 */\nfunction 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// 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 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'\nclass splitLine extends BtnMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $('<div class=\"w-e-menu\"><i class=\"w-e-icon-split-line\"></i></div>')\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) 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 const splitLineDOM: string = '<hr/>'\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","/**\n * @description 初始化编辑器 DOM 结构\n * @author wangfupeng\n */\n\nimport Editor from '../index'\nimport $, { DomElement } from '../../utils/dom-core'\nimport { getRandom } from '../../utils/util'\n\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 let $toolbarElem: DomElement\n let $textContainerElem: DomElement\n let $textElem: DomElement\n let $children: DomElement | null\n\n if (textSelector == null) {\n // 只有 toolbarSelector ,即是容器的选择器或元素,toolbar 和 text 的元素自行创建\n $toolbarElem = $('<div></div>')\n $textContainerElem = $('<div></div>')\n\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 $toolbarElem = $toolbarSelector\n $textContainerElem = $(textSelector)\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 const $placeholder = $(`<div>${i18next.t(editor.config.placeholder)}</div>`)\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($('<p><br></p>')) // 新增一行,方便继续编辑\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.getClientHeight()\n const textElemClientHeight = $textElem.getClientHeight()\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 * @description 初始化编辑器选区,将光标定位到文档末尾\n * @author wangfupeng\n */\n\nimport Editor from '../index'\nimport $ from '../../utils/dom-core'\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($('<p><br></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 // 最后一个元素不是 <p><br></p>,添加一个空行,重新设置选区\n $textElem.append($('<p><br></p>'))\n initSelection(editor)\n return\n }\n }\n\n if (editor.config.focus) {\n editor.selection.createRangeByElem($last, true, true)\n editor.selection.restoreSelection()\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 const { onchange } = editor.config\n editor.txt.eventHooks.changeEvents.push(function () {\n let html = editor.txt.html() || ''\n onchange(html)\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) {\n return\n }\n\n if (editor.isFocus) {\n _blurHandler(editor)\n }\n editor.isFocus = false\n } else {\n if (!editor.isFocus) {\n _focusHandler(editor)\n }\n\n editor.isFocus = true\n }\n }\n if (document.activeElement === editor.$textElem.elems[0]) {\n _focusHandler(editor)\n editor.isFocus = true\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 })\n .on('compositionend', () => {\n editor.isComposing = false\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 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 $textContainerElem.css('height', '100%')\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\">\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 setFullScreen(editor)\n } else {\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.$textElem\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 */\nfunction 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 */\nfunction 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 */\nfunction 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 */\nfunction 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","module.exports = require(\"core-js-pure/stable/object/entries\");","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.github.io/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.github.io/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.github.io/ecma262/#sec-object.values\n values: createMethod(false)\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 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 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 }\n\n // 销毁幕布并显示可编辑区域\n function enable() {\n if (!isCurtain) return\n $contentDom.remove()\n $menuDom.remove()\n editor.$textElem.show()\n isCurtain = false\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 position: absolute;\\n top: 0;\\n left: 0;\\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"],"sourceRoot":""}
\No newline at end of file