UNPKG

826 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/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.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/./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/modules/es.object.to-string.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.description.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.has-instance.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.match.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.match-all.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.replace.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.search.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.species.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.split.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.to-primitive.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.symbol.unscopables.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.json.to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.math.to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/modules/es.reflect.to-string-tag.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.dispose.js","webpack://wangEditor/./node_modules/core-js-pure/modules/esnext.symbol.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":[],"mappings":"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0B;AACpD,2BAA2B,mBAAO,CAAC,EAAqC;AACxE,+BAA+B,mBAAO,CAAC,EAAyC;;AAEhF;AACA;AACA,CAAC;AACD;AACA;AACA;;;;;;;ACTA,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,qBAAqB,mBAAO,CAAC,EAA6B;AAC1D,eAAe,mBAAO,CAAC,EAAwB;AAC/C,kBAAkB,mBAAO,CAAC,EAA2B;;AAErD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;AACA;AACA;;;;;;;ACnBA,WAAW,mBAAO,CAAC,EAAmB;;AAEtC;AACA;AACA;;;;;;;;ACJa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,SAAI;;AAEnF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,qEAAqE,qBAAqB,aAAa;;AAEvG;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;A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ACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;AC1GA,gBAAgB,mBAAO,CAAC,EAAgC;;AAExD;;;;;;;ACFA,eAAe,mBAAO,CAAC,EAAwB;AAC/C,eAAe,mBAAO,CAAC,EAAwB;AAC/C,2BAA2B,mBAAO,CAAC,EAAqC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXa;AACb,qBAAqB,mBAAO,CAAC,EAAsC;AACnE,kCAAkC,mBAAO,CAAC,EAA6C;AACvF,UAAU,mBAAO,CAAC,EAAkB;AACpC,sBAAsB,mBAAO,CAAC,CAAgC;AAC9D,cAAc,mBAAO,CAAC,EAAsB;;AAE5C;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACpCa;AACb,YAAY,mBAAO,CAAC,EAAoB;;AAExC;AACA;AACA;AACA;AACA,+CAA+C,SAAS,EAAE;AAC1D,GAAG;AACH;;;;;;;ACTA,iBAAiB,mBAAO,CAAC,GAAuC,E;;;;;;ACAhE,iBAAiB,mBAAO,CAAC,GAAyB,E;;;;;;;ACArC;AACb,QAAQ,mBAAO,CAAC,CAAU;AAC1B,aAAa,mBAAO,CAAC,CAAqB;AAC1C,6BAA6B,mBAAO,CAAC,GAAgC;AACrE,YAAY,mBAAO,CAAC,EAAoB;AACxC,kCAAkC,mBAAO,CAAC,EAA6C;AACvF,cAAc,mBAAO,CAAC,EAAsB;AAC5C,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,eAAe,mBAAO,CAAC,EAAwB;AAC/C,qBAAqB,mBAAO,CAAC,EAAgC;AAC7D,qBAAqB,mBAAO,CAAC,EAAqC;AAClE,cAAc,mBAAO,CAAC,EAA8B;AACpD,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,0BAA0B,mBAAO,CAAC,EAA6B;;AAE/D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mEAAmE,0CAA0C,EAAE;AAC/G;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP,mEAAmE,mCAAmC;AACtG,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA,KAAK,6BAA6B;;AAElC;;AAEA;AACA;;;;;;;ACxEA,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,eAAe,mBAAO,CAAC,EAAwB;AAC/C,UAAU,mBAAO,CAAC,EAAkB;AACpC,qBAAqB,mBAAO,CAAC,EAAqC;AAClE,UAAU,mBAAO,CAAC,EAAkB;AACpC,eAAe,mBAAO,CAAC,GAAuB;;AAE9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA,gBAAgB;AAChB,GAAG,EAAE;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC5Da;AACb,qBAAqB,mBAAO,CAAC,EAAqC;AAClE,aAAa,mBAAO,CAAC,EAA4B;AACjD,kBAAkB,mBAAO,CAAC,GAA2B;AACrD,WAAW,mBAAO,CAAC,EAAoC;AACvD,iBAAiB,mBAAO,CAAC,EAA0B;AACnD,cAAc,mBAAO,CAAC,EAAsB;AAC5C,qBAAqB,mBAAO,CAAC,EAA8B;AAC3D,iBAAiB,mBAAO,CAAC,GAA0B;AACnD,kBAAkB,mBAAO,CAAC,EAA0B;AACpD,cAAc,mBAAO,CAAC,GAAgC;AACtD,0BAA0B,mBAAO,CAAC,EAA6B;;AAE/D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,iEAAiE,iCAAiC;AAClG,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,kCAAkC;AAClC,oCAAoC;AACpC,cAAc;AACd,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;A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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,cAAc,eAAe,cAAc;AACjE;AACA;AACA;AACA,qCAAqC,cAAc;AACnD,CAAC;;AAED;AACA,yDAAyD,cAAc;AACvE,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,eAAe;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH,oBAAoB,cAAc;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK,GAAG,eAAe;;AAEvB;AACA,wCAAwC,+CAA+C;AACvF;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,GAAG,2CAA2C;AAC9C;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA,GAAG,8CAA8C;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,yDAAyD;AAC5D;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,2DAA2D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,CAAC;;;;;;;;AC5XY;AACb,4BAA4B,mBAAO,CAAC,EAAoC;AACxE,cAAc,mBAAO,CAAC,EAAsB;;AAE5C;AACA;AACA,2CAA2C;AAC3C;AACA;;;;;;;ACRA,sBAAsB,mBAAO,CAAC,CAAgC;;AAE9D;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS,EAAE;AACzD,CAAC,gBAAgB;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,GAAG,gBAAgB;AACnB;AACA;;;;;;;ACrCA,aAAa,mBAAO,CAAC,CAAqB;AAC1C,+BAA+B,mBAAO,CAAC,EAAiD;AACxF,gBAAgB,mBAAO,CAAC,GAAmB;AAC3C,aAAa,mBAAO,CAAC,GAA4B;AACjD,cAAc,mBAAO,CAAC,EAA6B;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;AC7EA,aAAa,mBAAO,CAAC,CAAqB;;AAE1C;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA,aAAa,mBAAO,CAAC,CAAqB;AAC1C,oBAAoB,mBAAO,CAAC,GAA6B;;AAEzD;;AAEA;;;;;;;;ACLa;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,iCAAiC,mBAAO,CAAC,EAAqC;AAC9E,cAAc,mBAAO,CAAC,EAAsB;AAC5C,cAAc,mBAAO,CAAC,EAAsB;;AAE5C;AACA;AACA,GAAG,gCAAgC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;AACT;AACA;AACA,2BAA2B;AAC3B;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;AACA,CAAC;;;;;;;;AC1CY;AACb,QAAQ,mBAAO,CAAC,CAAqB;AACrC,gBAAgB,mBAAO,CAAC,EAAyB;AACjD,iBAAiB,mBAAO,CAAC,EAA2B;AACpD,iCAAiC,mBAAO,CAAC,EAAqC;AAC9E,cAAc,mBAAO,CAAC,EAAsB;AAC5C,cAAc,mBAAO,CAAC,EAAsB;;AAE5C;;AAEA;AACA;AACA,GAAG,gCAAgC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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AACA;AACA,yFAAyF;AACzF;AACA,KAAK;AACL;AACA,mDAAmD,iDAAiD;AACpG,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,kCAAkC;AAChH;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gFAAgF,eAAe;AAC/F;AACA;AACA;;AAEA,GAAG,yEAAyE;AAC5E;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED,GAAG,qDAAqD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,mBAAmB,EAAE;AAC/C,0BAA0B,oBAAoB;AAC9C,CAAC;;AAED,GAAG,2EAA2E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,GAAG,uDAAuD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,GAAG,0DAA0D,kCAAkC,EAAE,GAAG;AACpG;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY,QAAQ;AACzC;AACA,0CAA0C;AAC1C,GAAG;;AAEH,KAAK,4DAA4D;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;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C,GAAgC;;AAE/D;AACA;AACA;AACA,yBAAyB,gEAAgE;AACzF,CAAC;;;;;;;ACRD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,gDAAgD;AAChD;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA,+CAA+C;AAC/C,uCAAuC;AACvC,gCAAgC;AAChC;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB,KAAK;AACL;;AAEA;AACA;;;;;;;;;ACvKA;;;AAGG;;;;;;;;;AAKH;;;;AAIG;;AACH,SAAS,cAAT,CAAwB,MAAxB,EAAwC,cAAxC,EAAkE;AAC9D,WAAS,OAAT,CAAiB,IAAjB,EAAiC;AAC7B,UAAM,CAAC,SAAP,CAAiB,iBAAjB,CAAmC,IAAnC;AACA,UAAM,CAAC,SAAP,CAAiB,gBAAjB;AACH;;AACD,gBAAc,CAA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","file":"wangEditor.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"wangEditor\"] = factory();\n\telse\n\t\troot[\"wangEditor\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 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\n/**\n * hex color 转换成 rgb\n * @param hex string\n */\nexport function hexToRgb(hex: string) {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\n if (result == null) return null\n\n const colors = result.map(i => parseInt(i, 16))\n const r = colors[1]\n const g = colors[2]\n const b = colors[3]\n\n return `rgb(${r}, ${g}, ${b})`\n}\n","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","module.exports = require(\"core-js-pure/stable/instance/map\");","/**\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, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.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 // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n","/**\n * @description Tooltip class\n * @author wangfupeng\n */\n\nimport $, { DomElement } from '../../utils/dom-core'\nimport Editor from '../../editor/index'\n\ntype PositionDataType = {\n top: number\n left: number\n}\n\nexport type TooltipConfItemType = {\n $elem: DomElement\n onClick: Function\n}\nexport type TooltipConfType = Array<TooltipConfItemType>\n\nclass Tooltip {\n private $container: DomElement\n private $targetElem: DomElement\n private editor: Editor\n private conf: TooltipConfType\n private _show: boolean\n private _isInsertTextContainer: boolean\n\n constructor(editor: Editor, $elem: DomElement, conf: TooltipConfType) {\n this.editor = editor\n this.$targetElem = $elem\n this.conf = conf\n this._show = false\n this._isInsertTextContainer = false\n\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","// empty\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.8.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 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 config.customAlert(\n t('插入图片错误'),\n 'error',\n `wangEditor: ${t('插入图片错误')},${t('图片链接')} \"${src}\",${t('下载链接失败')}`\n )\n img = null\n }\n img.onabort = () => (img = null)\n img.src = src\n }\n\n /**\n * 上传图片\n * @param files 文件列表\n */\n public uploadImg(files: FileList | File[]): void {\n if (!files.length) {\n return\n }\n\n const editor = this.editor\n const config = editor.config\n\n // ------------------------------ i18next ------------------------------\n\n const i18nPrefix = 'validate.'\n const t = (text: string): string => {\n return editor.i18next.t(i18nPrefix + text)\n }\n\n // ------------------------------ 获取配置信息 ------------------------------\n\n // 服务端地址\n let uploadImgServer = config.uploadImgServer\n // base64 格式\n const uploadImgShowBase64 = config.uploadImgShowBase64\n // 图片最大体积\n const maxSize = config.uploadImgMaxSize\n const maxSizeM = maxSize / 1024 / 1024\n // 一次最多上传图片数量\n const maxLength = config.uploadImgMaxLength\n // 自定义 fileName\n const uploadFileName = config.uploadFileName\n // 自定义参数\n const uploadImgParams = config.uploadImgParams\n // 参数拼接到 url 中\n const uploadImgParamsWithUrl = config.uploadImgParamsWithUrl\n // 自定义 header\n const uploadImgHeaders = config.uploadImgHeaders\n // 钩子函数\n const hooks = config.uploadImgHooks\n // 上传图片超时时间\n const timeout = config.uploadImgTimeout\n // 跨域带 cookie\n const withCredentials = config.withCredentials\n // 自定义上传图片\n const customUploadImg = config.customUploadImg\n\n if (!customUploadImg) {\n // 没有 customUploadImg 的情况下,需要如下两个配置才能继续进行图片上传\n if (!uploadImgServer && !uploadImgShowBase64) {\n return\n }\n }\n\n // ------------------------------ 验证文件信息 ------------------------------\n const resultFiles: File[] = []\n const errInfos: string[] = []\n arrForEach(files, file => {\n 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 config.customAlert(`${t('图片验证未通过')}: \\n` + errInfos.join('\\n'), 'warning')\n return\n }\n if (resultFiles.length > maxLength) {\n config.customAlert(t('一次最多上传') + maxLength + t('张图片'), 'warning')\n return\n }\n\n // ------------------------------ 自定义上传 ------------------------------\n if (customUploadImg && typeof customUploadImg === 'function') {\n customUploadImg(resultFiles, this.insertImg.bind(this))\n\n // 阻止以下代码执行,重要!!!\n return\n }\n\n // ------------------------------ 上传图片 ------------------------------\n\n // 添加图片数据\n const formData = new FormData()\n resultFiles.forEach((file: File, index: number) => {\n let name = uploadFileName || file.name\n if (resultFiles.length > 1) {\n // 多个文件时,filename 不能重复\n name = name + (index + 1)\n }\n formData.append(name, file)\n })\n if (uploadImgServer) {\n // 添加自定义参数\n const uploadImgServerArr = uploadImgServer.split('#')\n uploadImgServer = uploadImgServerArr[0]\n const uploadImgServerHash = uploadImgServerArr[1] || ''\n forEach(uploadImgParams, (key: string, val: string) => {\n // 因使用者反应,自定义参数不能默认 encode ,由 v3.1.1 版本开始注释掉\n // val = encodeURIComponent(val)\n\n // 第一,将参数拼接到 url 中\n if (uploadImgParamsWithUrl) {\n if (uploadImgServer.indexOf('?') > 0) {\n uploadImgServer += '&'\n } else {\n uploadImgServer += '?'\n }\n uploadImgServer = uploadImgServer + key + '=' + val\n }\n\n // 第二,将参数添加到 formData 中\n formData.append(key, val)\n })\n if (uploadImgServerHash) {\n uploadImgServer += '#' + uploadImgServerHash\n }\n\n // 开始上传\n const xhr = post(uploadImgServer, {\n timeout,\n formData,\n headers: uploadImgHeaders,\n withCredentials: !!withCredentials,\n beforeSend: xhr => {\n if (hooks.before) return hooks.before(xhr, editor, resultFiles)\n },\n onTimeout: xhr => {\n config.customAlert(t('上传图片超时'), 'error')\n if (hooks.timeout) hooks.timeout(xhr, editor)\n },\n onProgress: (percent, e) => {\n const progressBar = new Progress(editor)\n if (e.lengthComputable) {\n percent = e.loaded / e.total\n progressBar.show(percent)\n }\n },\n onError: xhr => {\n config.customAlert(\n t('上传图片错误'),\n 'error',\n `${t('上传图片错误')},${t('服务器返回状态')}: ${xhr.status}`\n )\n if (hooks.error) hooks.error(xhr, editor)\n },\n onFail: (xhr, resultStr) => {\n config.customAlert(\n t('上传图片失败'),\n 'error',\n t('上传图片返回结果错误') + `,${t('返回结果')}: ` + resultStr\n )\n if (hooks.fail) hooks.fail(xhr, editor, resultStr)\n },\n onSuccess: (xhr, result: ResType) => {\n if (hooks.customInsert) {\n // 自定义插入图片\n hooks.customInsert(this.insertImg.bind(this), result, editor)\n return\n }\n if (result.errno != '0') {\n // 返回格式不对,应该为 { errno: 0, data: [...] }\n config.customAlert(\n t('上传图片失败'),\n 'error',\n `${t('上传图片返回结果错误')},${t('返回结果')} errno=${result.errno}`\n )\n if (hooks.fail) hooks.fail(xhr, editor, result)\n return\n }\n\n // 成功,插入图片\n const data = result.data\n data.forEach(link => {\n this.insertImg(link)\n })\n\n // 钩子函数\n if (hooks.success) hooks.success(xhr, editor, result)\n },\n })\n if (typeof xhr === 'string') {\n // 上传被阻止\n config.customAlert(xhr, 'error')\n }\n\n // 阻止以下代码执行,重要!!!\n return\n }\n\n // ------------------------------ 显示 base64 格式 ------------------------------\n if (uploadImgShowBase64) {\n arrForEach(files, file => {\n const _this = this\n const reader = new FileReader()\n reader.readAsDataURL(file)\n reader.onload = function () {\n if (!this.result) return\n _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 position: absolute;\\n display: flex;\\n color: #f1f1f1;\\n background-color: rgba(0, 0, 0, 0.75);\\n box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15);\\n border-radius: 4px;\\n padding: 4px 5px 6px;\\n justify-content: center;\\n align-items: center;\\n}\\n.w-e-tooltip-up::after {\\n content: \\\"\\\";\\n position: absolute;\\n top: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border: 5px solid rgba(0, 0, 0, 0);\\n border-top-color: rgba(0, 0, 0, 0.73);\\n}\\n.w-e-tooltip-down::after {\\n content: \\\"\\\";\\n position: absolute;\\n bottom: 100%;\\n left: 50%;\\n margin-left: -5px;\\n border: 5px solid rgba(0, 0, 0, 0);\\n border-bottom-color: rgba(0, 0, 0, 0.73);\\n}\\n.w-e-tooltip-item-wrapper {\\n cursor: pointer;\\n font-size: 14px;\\n margin: 0 5px;\\n}\\n.w-e-tooltip-item-wrapper:hover {\\n color: #ccc;\\n text-decoration: underline;\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var api = require(\"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/src/index.js!../../../node_modules/less-loader/dist/cjs.js!./panel.less\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".w-e-menu .w-e-panel-container {\\n position: absolute;\\n top: 0;\\n left: 50%;\\n border: 1px solid #ccc;\\n border-top: 0;\\n box-shadow: 1px 1px 2px #ccc;\\n color: #333;\\n background-color: #fff;\\n text-align: left;\\n /* 为 emotion panel 定制的样式 */\\n /* 上传图片的 panel 定制样式 */\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-close {\\n position: absolute;\\n right: 0;\\n top: 0;\\n padding: 5px;\\n margin: 2px 5px 0 0;\\n cursor: pointer;\\n color: #999;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-close:hover {\\n color: #333;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-title {\\n list-style: none;\\n display: flex;\\n font-size: 14px;\\n margin: 2px 10px 0 10px;\\n border-bottom: 1px solid #f1f1f1;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-title .w-e-item {\\n padding: 3px 5px;\\n color: #999;\\n cursor: pointer;\\n margin: 0 3px;\\n position: relative;\\n top: 1px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-title .w-e-active {\\n color: #333;\\n border-bottom: 1px solid #333;\\n cursor: default;\\n font-weight: 700;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content {\\n padding: 10px 15px 10px 15px;\\n font-size: 16px;\\n /* 输入框的样式 */\\n /* 按钮的样式 */\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input:focus,\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content textarea:focus,\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content button:focus {\\n outline: none;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content textarea {\\n width: 100%;\\n border: 1px solid #ccc;\\n padding: 5px;\\n margin-top: 10px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content textarea:focus {\\n border-color: #1e88e5;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text] {\\n border: none;\\n border-bottom: 1px solid #ccc;\\n font-size: 14px;\\n height: 20px;\\n color: #333;\\n text-align: left;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text].small {\\n width: 30px;\\n text-align: center;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text].block {\\n display: block;\\n width: 100%;\\n margin: 10px 0;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content input[type=text]:focus {\\n border-bottom: 2px solid #1e88e5;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button {\\n font-size: 14px;\\n color: #1e88e5;\\n border: none;\\n padding: 5px 10px;\\n background-color: #fff;\\n cursor: pointer;\\n border-radius: 3px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.left {\\n float: left;\\n margin-right: 10px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.right {\\n float: right;\\n margin-left: 10px;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.gray {\\n color: #999;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button.red {\\n color: #c24f4a;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container button:hover {\\n background-color: #f1f1f1;\\n}\\n.w-e-menu .w-e-panel-container .w-e-panel-tab-content .w-e-button-container:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n}\\n.w-e-menu .w-e-panel-container .w-e-emoticon-container .w-e-item {\\n cursor: pointer;\\n font-size: 18px;\\n padding: 0 3px;\\n display: inline-block;\\n}\\n.w-e-menu .w-e-panel-container .w-e-up-img-container {\\n 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","// empty\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","// empty\n","// empty\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.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 uploadImgAccept: string[]\n uploadImgServer: string\n uploadImgShowBase64: boolean\n uploadImgMaxSize: number\n uploadImgMaxLength: number\n uploadFileName: string\n uploadImgParams: DicType\n uploadImgParamsWithUrl: boolean\n uploadImgHeaders: DicType\n uploadImgHooks: UploadImageHooksType\n uploadImgTimeout: number\n withCredentials: boolean\n customUploadImg: Function | null\n customAlert: Function\n\n onCatalogChange: Function | null\n\n lang: string\n languages: typeof langConfig\n\n linkCheck: Function\n linkImgCheck: Function\n compatibleMode: () => boolean\n historyMaxSize: number\n\n focus: boolean\n}\n\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\n/**\n * 提示信息\n * @param alertInfo alert info\n * @param alertType 错误提示类型\n * @param debugInfo debug info\n */\nfunction customAlert(alertInfo: string, alertType: string, debugInfo?: string): void {\n window.alert(alertInfo)\n if (debugInfo) {\n console.error('wangEditor: ' + debugInfo)\n }\n}\n\nexport default {\n onchangeTimeout: 200,\n\n onchange: EMPTY_FN,\n onfocus: EMPTY_FN,\n onblur: EMPTY_FN,\n\n onCatalogChange: null,\n customAlert,\n}\n","/**\n * @description 粘贴,配置文件\n * @author wangfupeng\n */\n\nexport default {\n // 粘贴过滤样式,默认开启\n pasteFilterStyle: true,\n\n // 粘贴内容时,忽略图片。默认关闭\n pasteIgnoreImg: false,\n\n // 对粘贴的文字进行自定义处理,返回处理后的结果。编辑器会将处理后的结果粘贴到编辑区域中。\n // IE 暂时不支持\n pasteTextHandle: function (content: string): string {\n // content 即粘贴过来的内容(html 或 纯文本),可进行自定义处理然后返回\n return content\n },\n}\n","/**\n * @description 命令配置项\n * @author wangfupeng\n */\n\nexport default {\n styleWithCSS: false, // 默认 false\n}\n","/**\n * @description 图片相关的配置\n * @author wangfupeng\n */\n\nimport Editor from '../editor/index'\nimport { EMPTY_FN } from '../utils/const'\nimport { ResType } from '../menus/img/upload-img'\n\nexport type UploadImageHooksType = {\n before?: (\n xhr: XMLHttpRequest,\n editor: Editor,\n files: File[]\n ) => { prevent: boolean; msg: string } | void\n success?: (xhr: XMLHttpRequest, editor: Editor, result: ResType) => void\n fail?: (xhr: XMLHttpRequest, editor: Editor, err: ResType | string) => void\n error?: (xhr: XMLHttpRequest, editor: Editor) => void\n timeout?: (xhr: XMLHttpRequest, editor: Editor) => void\n customInsert?: (\n inserImg: (this: Editor, src: string) => void,\n result: ResType,\n editor: Editor\n ) => void\n}\n\nexport default {\n // 显示“插入网络图片”\n showLinkImg: true,\n\n // 插入图片成功之后的回调函数\n linkImgCallback: EMPTY_FN,\n\n // accept\n uploadImgAccept: ['jpg', 'jpeg', 'png', 'gif', 'bmp'],\n\n // 服务端地址\n uploadImgServer: '',\n\n // 使用 base64 存储图片\n uploadImgShowBase64: false,\n\n // 上传图片的最大体积,默认 5M\n uploadImgMaxSize: 5 * 1024 * 1024,\n\n // 一次最多上传多少个图片\n uploadImgMaxLength: 100,\n\n // 自定义上传图片的名称\n uploadFileName: '',\n\n // 上传图片自定义参数\n uploadImgParams: {},\n\n // 自定义参数拼接到 url 中\n uploadImgParamsWithUrl: false,\n\n // 上传图片自定义 header\n uploadImgHeaders: {},\n\n // 钩子函数\n uploadImgHooks: {},\n\n // 上传图片超时时间 ms\n uploadImgTimeout: 10 * 1000,\n\n // 跨域带 cookie\n withCredentials: false,\n\n // 自定义上传\n customUploadImg: null,\n}\n","/**\n * @description 默认常量配置\n * @author xiaokyo\n */\n\nexport default {\n focus: true,\n height: 300,\n placeholder: '请输入正文',\n zIndexFullScreen: 10002,\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 请输入正文: '请输入正文',\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 重置: 'reset',\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 // 设置折叠后的光标位置,在firebox等浏览器下\n // 光标设置在end位置会自动换行\n editor.selection.moveCursor($p.getNode(), true)\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 // 如果复制拿到的内容是 `<body><html>这种形式无法成功粘贴</html></body>`\n if (isIgnoreTag(CUR_TAG, ignoreImg) && /^</.test(str)) {\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(\n nodeList: NodeListType,\n parent: Node = document.createElement('div')\n): DomElement {\n // 设置一个父节点存储所有子节点\n let root = parent\n\n // 遍历节点JSON\n nodeList.forEach(item => {\n let elem: Text | Node | undefined\n\n // 当为文本节点时\n if (typeof item === 'string') {\n elem = document.createTextNode(item)\n }\n\n // 当为普通节点时\n if (typeof item === 'object') {\n elem = document.createElement(item.tag)\n item.attrs.forEach(attr => {\n $(elem).attr(attr.name, attr.value)\n })\n\n // 有子节点时递归将子节点加入当前节点\n if (item.children && item.children.length > 0) {\n getHtmlByNodeList(item.children, elem.getRootNode())\n }\n }\n elem && root.appendChild(elem)\n })\n return $(root)\n}\n\nexport default getHtmlByNodeList\n","/**\n * @description Menus 菜单栏 入口文件\n * @author wangfupeng\n */\n\nimport Editor from '../editor/index'\nimport Menu from './menu-constructors/Menu'\nimport MenuConstructorList, { MenuListType } from './menu-list'\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 editor.config.customAlert(check, 'warning')\n }\n return false\n }\n\n const conf = {\n width: 300,\n height: 0,\n\n // panel 中可包含多个 tab\n tabs: [\n {\n // tab 的标题\n title: editor.i18next.t('menus.panelMenus.link.链接'),\n // 模板\n tpl: `<div>\n <input\n id=\"${inputTextId}\"\n type=\"text\"\n class=\"block\"\n value=\"${text}\"\n placeholder=\"${editor.i18next.t('menus.panelMenus.link.链接文字')}\"/>\n </td>\n <input\n id=\"${inputLinkId}\"\n type=\"text\"\n class=\"block\"\n value=\"${link}\"\n placeholder=\"${editor.i18next.t('如')} https://...\"/>\n </td>\n <div class=\"w-e-button-container\">\n <button 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 const isEmptySelection = editor.selection.isSelectionEmpty()\n\n const $selectionElem = editor.selection.getSelectionContainerElem()?.elems[0]\n const isFont = $selectionElem?.nodeName.toLowerCase() !== 'p'\n const isSameValue = $selectionElem?.getAttribute('face') === value\n\n if (isEmptySelection) {\n if (isFont && !isSameValue) {\n const $elems = editor.selection.getSelectionRangeTopNodes(editor)\n editor.selection.createRangeByElem($elems[0])\n editor.selection.moveCursor($elems[0].elems[0])\n }\n // 插入空白选区\n editor.selection.createEmptyRange()\n }\n\n editor.cmd.do('fontName', value)\n\n if (isEmptySelection) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n * ?字体是否需要有激活状态这个操作?\n */\n public tryChangeActive(): void {\n // const editor = this.editor\n // const cmdValue = editor.cmd.queryCommandValue('fontName')\n // if (menusConfig.fontNames.indexOf(cmdValue) >= 0) {\n // this.active()\n // } else {\n // this.unActive()\n // }\n }\n}\n\nexport default FontStyle\n","/**\n * @description 字体 class\n * @author dyl\n */\nimport $ from '../../utils/dom-core'\nimport { 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 const isEmptySelection = editor.selection.isSelectionEmpty()\n\n const $selectionElem = editor.selection.getSelectionContainerElem()?.elems[0]\n const isFont = $selectionElem?.nodeName.toLowerCase() !== 'p'\n const isSameSize = $selectionElem?.getAttribute('size') === value\n\n if (isEmptySelection) {\n if (isFont && !isSameSize) {\n const $elems = editor.selection.getSelectionRangeTopNodes(editor)\n editor.selection.createRangeByElem($elems[0])\n editor.selection.moveCursor($elems[0].elems[0])\n }\n // 插入空白选区\n editor.selection.createEmptyRange()\n }\n\n editor.cmd.do('fontSize', value)\n\n if (isEmptySelection) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n * ?字号是否需要有激活状态这个操作?\n */\n public tryChangeActive(): void {}\n}\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'\nimport { hexToRgb } from '../../utils/util'\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 const isEmptySelection = editor.selection.isSelectionEmpty()\n const $selectionElem = editor.selection.getSelectionContainerElem()?.elems[0]\n const isSpan = $selectionElem?.nodeName.toLowerCase() !== 'p'\n const bgColor = $selectionElem?.style.backgroundColor\n const isSameColor = hexToRgb(value) === bgColor\n\n if (isEmptySelection) {\n if (isSpan && !isSameColor) {\n const $elems = editor.selection.getSelectionRangeTopNodes(editor)\n editor.selection.createRangeByElem($elems[0])\n editor.selection.moveCursor($elems[0].elems[0])\n }\n // 插入空白选区\n editor.selection.createEmptyRange()\n }\n\n editor.cmd.do('backColor', value)\n\n if (isEmptySelection) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {}\n}\n\nexport default BackColor\n","/**\n * @description 文字颜色 FontColor\n * @author lkw\n *\n */\n\nimport DropListMenu from '../menu-constructors/DropListMenu'\nimport $ from '../../utils/dom-core'\nimport Editor from '../../editor/index'\nimport { MenuActive } from '../menu-constructors/Menu'\n\nclass FontColor extends DropListMenu implements MenuActive {\n constructor(editor: Editor) {\n const $elem = $(\n `<div class=\"w-e-menu\">\n <i class=\"w-e-icon-pencil2\"></i>\n </div>`\n )\n const colorListConf = {\n width: 120,\n title: '文字颜色',\n // droplist 内容以 block 形式展示\n type: 'inline-block',\n list: editor.config.colors.map(color => {\n return {\n $elem: $(`<i style=\"color:${color};\" class=\"w-e-icon-pencil2\"></i>`),\n value: color,\n }\n }),\n clickHandler: (value: string) => {\n // this 是指向当前的 BackColor 对象\n this.command(value)\n },\n }\n super($elem, editor, colorListConf)\n }\n\n /**\n * 执行命令\n * @param value value\n */\n public command(value: string): void {\n const editor = this.editor\n const isEmptySelection = editor.selection.isSelectionEmpty()\n const $selectionElem = editor.selection.getSelectionContainerElem()?.elems[0]\n const isFont = $selectionElem?.nodeName.toLowerCase() !== 'p'\n const isSameColor = $selectionElem?.getAttribute('color') === value\n\n if (isEmptySelection) {\n if (isFont && !isSameColor) {\n const $elems = editor.selection.getSelectionRangeTopNodes(editor)\n editor.selection.createRangeByElem($elems[0])\n editor.selection.moveCursor($elems[0].elems[0])\n }\n // 插入空白选区\n editor.selection.createEmptyRange()\n }\n\n editor.cmd.do('foreColor', value)\n\n if (isEmptySelection) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n\n /**\n * 尝试修改菜单激活状态\n */\n public tryChangeActive(): void {}\n}\n\nexport default FontColor\n","/**\n * @description 视频 菜单\n * @author tonghan\n */\n\nimport $ from '../../utils/dom-core'\nimport Panel from '../menu-constructors/Panel'\nimport Editor from '../../editor/index'\nimport PanelMenu from '../menu-constructors/PanelMenu'\nimport { MenuActive } from '../menu-constructors/Menu'\nimport createPanelConf from './create-panel-conf'\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 config.customAlert(\n `${t('您插入的网络图片无法识别', 'validate.')},${t(\n '请替换为支持的图片类型',\n 'validate.'\n )}:jpg | png | gif ...`,\n 'warning'\n )\n } else return true\n } else {\n //用户未能通过开发者的校验,开发者希望我们提示这一字符串\n config.customAlert(check, 'error')\n }\n return false\n }\n\n // tabs 配置 -----------------------------------------\n const fileMultipleAttr = config.uploadImgMaxLength === 1 ? '' : 'multiple=\"multiple\"'\n const accepts: string = config.uploadImgAccept.map((item: string) => `image/${item}`).join(',')\n 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=\"${accepts}\"/>\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 const t = (text: string, prefix: string = ''): string => {\n return editor.i18next.t(prefix + text)\n }\n\n /**\n * 显示 tooltip\n * @param $node 链接元素\n */\n function showImgTooltip($node: DomElement) {\n const conf: TooltipConfType = [\n {\n $elem: $(\"<span class='w-e-icon-trash-o'></span>\"),\n onClick: (editor: Editor, $node: DomElement) => {\n // 选中img元素\n editor.selection.createRangeByElem($node)\n editor.selection.restoreSelection()\n editor.cmd.do('delete')\n // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $('<span>30%</span>'),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.attr('width', '30%')\n $node.removeAttr('height')\n\n // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $('<span>50%</span>'),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.attr('width', '50%')\n $node.removeAttr('height')\n\n // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $('<span>100%</span>'),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.attr('width', '100%')\n $node.removeAttr('height')\n\n // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n {\n $elem: $(`<span>${t('重置')}</span>`),\n onClick: (editor: Editor, $node: DomElement) => {\n $node.removeAttr('width')\n $node.removeAttr('height')\n\n // 返回 true,表示执行完之后,隐藏 tooltip。否则不隐藏。\n return true\n },\n },\n ]\n\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