editor.js/build/codex-editor.js.map
George Berezhnoy bcdfcdadbc
Move to typescript (#474)
* Move all modules to ts

* It works

* Update README.md

Co-Authored-By: gohabereg <gohabereg@users.noreply.github.com>

* Interfaces

* Interfaces

* Move depending interfaces to external types

* Update README.md

* update tools

* add some docs

* Add some fixes

* Add desctiprion for Block declaration and Core properties

* Fixes due comments
:

* Remove Block from external types

* Bump version

* Update src/components/modules/tools.ts

Co-Authored-By: gohabereg <gohabereg@users.noreply.github.com>

* Update src/components/core.ts

Co-Authored-By: gohabereg <gohabereg@users.noreply.github.com>

* Rename gteBlockHTMLByIndex to getBlockByIndex

* Remove unnecessary constructors

* Clean up bindEvents method

* Add InlineToolConstructable interface

* Delete legacy notifications class

* Fix zero-configuration bugs

* Update inline tools and block tunes constructors
2018-11-23 19:11:50 +03:00

1 line
819 KiB
XML

{"version":3,"sources":["webpack://CodexEditor/webpack/universalModuleDefinition","webpack://CodexEditor/webpack/bootstrap","webpack://CodexEditor/./build/sprite.svg","webpack://CodexEditor/./node_modules/@babel/polyfill/lib/noConflict.js","webpack://CodexEditor/./node_modules/@babel/polyfill/noConflict.js","webpack://CodexEditor/./node_modules/@babel/register/lib/browser.js","webpack://CodexEditor/./node_modules/@babel/register/lib/index.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/createClass.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/inherits.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://CodexEditor/./node_modules/@babel/runtime/helpers/typeof.js","webpack://CodexEditor/./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime-module.js","webpack://CodexEditor/./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js","webpack://CodexEditor/./node_modules/@babel/runtime/regenerator/index.js","webpack://CodexEditor/./node_modules/@codexteam/shortcuts/lib/shortcuts.js","webpack://CodexEditor/./node_modules/codex-notifier/dist/bundle.js","webpack://CodexEditor/./node_modules/core-js/es6/index.js","webpack://CodexEditor/./node_modules/core-js/fn/array/includes.js","webpack://CodexEditor/./node_modules/core-js/fn/object/entries.js","webpack://CodexEditor/./node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack://CodexEditor/./node_modules/core-js/fn/object/values.js","webpack://CodexEditor/./node_modules/core-js/fn/promise/finally.js","webpack://CodexEditor/./node_modules/core-js/fn/string/pad-end.js","webpack://CodexEditor/./node_modules/core-js/fn/string/pad-start.js","webpack://CodexEditor/./node_modules/core-js/fn/symbol/async-iterator.js","webpack://CodexEditor/./node_modules/core-js/modules/_a-function.js","webpack://CodexEditor/./node_modules/core-js/modules/_a-number-value.js","webpack://CodexEditor/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://CodexEditor/./node_modules/core-js/modules/_an-instance.js","webpack://CodexEditor/./node_modules/core-js/modules/_an-object.js","webpack://CodexEditor/./node_modules/core-js/modules/_array-copy-within.js","webpack://CodexEditor/./node_modules/core-js/modules/_array-fill.js","webpack://CodexEditor/./node_modules/core-js/modules/_array-includes.js","webpack://CodexEditor/./node_modules/core-js/modules/_array-methods.js","webpack://CodexEditor/./node_modules/core-js/modules/_array-reduce.js","webpack://CodexEditor/./node_modules/core-js/modules/_array-species-constructor.js","webpack://CodexEditor/./node_modules/core-js/modules/_array-species-create.js","webpack://CodexEditor/./node_modules/core-js/modules/_bind.js","webpack://CodexEditor/./node_modules/core-js/modules/_classof.js","webpack://CodexEditor/./node_modules/core-js/modules/_cof.js","webpack://CodexEditor/./node_modules/core-js/modules/_collection-strong.js","webpack://CodexEditor/./node_modules/core-js/modules/_collection-weak.js","webpack://CodexEditor/./node_modules/core-js/modules/_collection.js","webpack://CodexEditor/./node_modules/core-js/modules/_core.js","webpack://CodexEditor/./node_modules/core-js/modules/_create-property.js","webpack://CodexEditor/./node_modules/core-js/modules/_ctx.js","webpack://CodexEditor/./node_modules/core-js/modules/_date-to-iso-string.js","webpack://CodexEditor/./node_modules/core-js/modules/_date-to-primitive.js","webpack://CodexEditor/./node_modules/core-js/modules/_defined.js","webpack://CodexEditor/./node_modules/core-js/modules/_descriptors.js","webpack://CodexEditor/./node_modules/core-js/modules/_dom-create.js","webpack://CodexEditor/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://CodexEditor/./node_modules/core-js/modules/_enum-keys.js","webpack://CodexEditor/./node_modules/core-js/modules/_export.js","webpack://CodexEditor/./node_modules/core-js/modules/_fails-is-regexp.js","webpack://CodexEditor/./node_modules/core-js/modules/_fails.js","webpack://CodexEditor/./node_modules/core-js/modules/_fix-re-wks.js","webpack://CodexEditor/./node_modules/core-js/modules/_flags.js","webpack://CodexEditor/./node_modules/core-js/modules/_for-of.js","webpack://CodexEditor/./node_modules/core-js/modules/_global.js","webpack://CodexEditor/./node_modules/core-js/modules/_has.js","webpack://CodexEditor/./node_modules/core-js/modules/_hide.js","webpack://CodexEditor/./node_modules/core-js/modules/_html.js","webpack://CodexEditor/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://CodexEditor/./node_modules/core-js/modules/_inherit-if-required.js","webpack://CodexEditor/./node_modules/core-js/modules/_invoke.js","webpack://CodexEditor/./node_modules/core-js/modules/_iobject.js","webpack://CodexEditor/./node_modules/core-js/modules/_is-array-iter.js","webpack://CodexEditor/./node_modules/core-js/modules/_is-array.js","webpack://CodexEditor/./node_modules/core-js/modules/_is-integer.js","webpack://CodexEditor/./node_modules/core-js/modules/_is-object.js","webpack://CodexEditor/./node_modules/core-js/modules/_is-regexp.js","webpack://CodexEditor/./node_modules/core-js/modules/_iter-call.js","webpack://CodexEditor/./node_modules/core-js/modules/_iter-create.js","webpack://CodexEditor/./node_modules/core-js/modules/_iter-define.js","webpack://CodexEditor/./node_modules/core-js/modules/_iter-detect.js","webpack://CodexEditor/./node_modules/core-js/modules/_iter-step.js","webpack://CodexEditor/./node_modules/core-js/modules/_iterators.js","webpack://CodexEditor/./node_modules/core-js/modules/_library.js","webpack://CodexEditor/./node_modules/core-js/modules/_math-expm1.js","webpack://CodexEditor/./node_modules/core-js/modules/_math-fround.js","webpack://CodexEditor/./node_modules/core-js/modules/_math-log1p.js","webpack://CodexEditor/./node_modules/core-js/modules/_math-sign.js","webpack://CodexEditor/./node_modules/core-js/modules/_meta.js","webpack://CodexEditor/./node_modules/core-js/modules/_microtask.js","webpack://CodexEditor/./node_modules/core-js/modules/_new-promise-capability.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-assign.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-create.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-dp.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-dps.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-gopd.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-gopn-ext.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-gopn.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-gops.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-gpo.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-keys-internal.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-keys.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-pie.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-sap.js","webpack://CodexEditor/./node_modules/core-js/modules/_object-to-array.js","webpack://CodexEditor/./node_modules/core-js/modules/_own-keys.js","webpack://CodexEditor/./node_modules/core-js/modules/_parse-float.js","webpack://CodexEditor/./node_modules/core-js/modules/_parse-int.js","webpack://CodexEditor/./node_modules/core-js/modules/_perform.js","webpack://CodexEditor/./node_modules/core-js/modules/_promise-resolve.js","webpack://CodexEditor/./node_modules/core-js/modules/_property-desc.js","webpack://CodexEditor/./node_modules/core-js/modules/_redefine-all.js","webpack://CodexEditor/./node_modules/core-js/modules/_redefine.js","webpack://CodexEditor/./node_modules/core-js/modules/_same-value.js","webpack://CodexEditor/./node_modules/core-js/modules/_set-proto.js","webpack://CodexEditor/./node_modules/core-js/modules/_set-species.js","webpack://CodexEditor/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://CodexEditor/./node_modules/core-js/modules/_shared-key.js","webpack://CodexEditor/./node_modules/core-js/modules/_shared.js","webpack://CodexEditor/./node_modules/core-js/modules/_species-constructor.js","webpack://CodexEditor/./node_modules/core-js/modules/_strict-method.js","webpack://CodexEditor/./node_modules/core-js/modules/_string-at.js","webpack://CodexEditor/./node_modules/core-js/modules/_string-context.js","webpack://CodexEditor/./node_modules/core-js/modules/_string-html.js","webpack://CodexEditor/./node_modules/core-js/modules/_string-pad.js","webpack://CodexEditor/./node_modules/core-js/modules/_string-repeat.js","webpack://CodexEditor/./node_modules/core-js/modules/_string-trim.js","webpack://CodexEditor/./node_modules/core-js/modules/_string-ws.js","webpack://CodexEditor/./node_modules/core-js/modules/_task.js","webpack://CodexEditor/./node_modules/core-js/modules/_to-absolute-index.js","webpack://CodexEditor/./node_modules/core-js/modules/_to-index.js","webpack://CodexEditor/./node_modules/core-js/modules/_to-integer.js","webpack://CodexEditor/./node_modules/core-js/modules/_to-iobject.js","webpack://CodexEditor/./node_modules/core-js/modules/_to-length.js","webpack://CodexEditor/./node_modules/core-js/modules/_to-object.js","webpack://CodexEditor/./node_modules/core-js/modules/_to-primitive.js","webpack://CodexEditor/./node_modules/core-js/modules/_typed-array.js","webpack://CodexEditor/./node_modules/core-js/modules/_typed-buffer.js","webpack://CodexEditor/./node_modules/core-js/modules/_typed.js","webpack://CodexEditor/./node_modules/core-js/modules/_uid.js","webpack://CodexEditor/./node_modules/core-js/modules/_user-agent.js","webpack://CodexEditor/./node_modules/core-js/modules/_validate-collection.js","webpack://CodexEditor/./node_modules/core-js/modules/_wks-define.js","webpack://CodexEditor/./node_modules/core-js/modules/_wks-ext.js","webpack://CodexEditor/./node_modules/core-js/modules/_wks.js","webpack://CodexEditor/./node_modules/core-js/modules/core.get-iterator-method.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.copy-within.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.every.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.fill.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.filter.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.find-index.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.find.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.for-each.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.from.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.index-of.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.is-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.iterator.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.join.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.last-index-of.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.map.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.of.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.reduce-right.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.reduce.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.slice.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.some.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.sort.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.array.species.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.date.now.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.date.to-json.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.date.to-primitive.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.date.to-string.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.function.bind.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.function.has-instance.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.function.name.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.map.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.acosh.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.asinh.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.atanh.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.cbrt.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.clz32.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.cosh.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.expm1.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.fround.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.hypot.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.imul.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.log10.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.log1p.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.log2.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.sign.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.sinh.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.tanh.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.math.trunc.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.constructor.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.epsilon.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.is-integer.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.is-nan.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.parse-float.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.parse-int.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.to-fixed.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.number.to-precision.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.assign.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.create.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.define-properties.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.define-property.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.freeze.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.is-extensible.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.is-frozen.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.is-sealed.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.is.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.keys.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.seal.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.object.to-string.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.parse-float.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.parse-int.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.promise.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.apply.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.construct.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.define-property.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.get.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.has.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.reflect.set.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.regexp.constructor.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.regexp.flags.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.regexp.match.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.regexp.search.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.regexp.split.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.regexp.to-string.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.set.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.anchor.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.big.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.blink.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.bold.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.code-point-at.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.ends-with.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.fixed.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.fontcolor.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.fontsize.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.from-code-point.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.includes.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.italics.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.iterator.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.link.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.raw.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.repeat.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.small.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.starts-with.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.strike.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.sub.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.sup.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.string.trim.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.symbol.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.data-view.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.float32-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.float64-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.int16-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.int32-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.int8-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.weak-map.js","webpack://CodexEditor/./node_modules/core-js/modules/es6.weak-set.js","webpack://CodexEditor/./node_modules/core-js/modules/es7.array.includes.js","webpack://CodexEditor/./node_modules/core-js/modules/es7.object.entries.js","webpack://CodexEditor/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://CodexEditor/./node_modules/core-js/modules/es7.object.values.js","webpack://CodexEditor/./node_modules/core-js/modules/es7.promise.finally.js","webpack://CodexEditor/./node_modules/core-js/modules/es7.string.pad-end.js","webpack://CodexEditor/./node_modules/core-js/modules/es7.string.pad-start.js","webpack://CodexEditor/./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack://CodexEditor/./node_modules/core-js/modules/web.dom.iterable.js","webpack://CodexEditor/./node_modules/core-js/modules/web.immediate.js","webpack://CodexEditor/./node_modules/core-js/modules/web.timers.js","webpack://CodexEditor/./node_modules/core-js/web/index.js","webpack://CodexEditor/./node_modules/css-loader/lib/css-base.js","webpack://CodexEditor/./node_modules/html-janitor/src/html-janitor.js","webpack://CodexEditor/./node_modules/regenerator-runtime/runtime.js","webpack://CodexEditor/./src/codex.ts","webpack://CodexEditor/./src/components/__module.ts","webpack://CodexEditor/./src/components/block-tunes/block-tune-delete.ts","webpack://CodexEditor/./src/components/block-tunes/block-tune-move-down.ts","webpack://CodexEditor/./src/components/block-tunes/block-tune-move-up.ts","webpack://CodexEditor/./src/components/block.ts","webpack://CodexEditor/./src/components/blocks.ts","webpack://CodexEditor/./src/components/core.ts","webpack://CodexEditor/./src/components/dom.ts","webpack://CodexEditor/./src/components/inline-tools/inline-tool-bold.ts","webpack://CodexEditor/./src/components/inline-tools/inline-tool-italic.ts","webpack://CodexEditor/./src/components/inline-tools/inline-tool-link.ts","webpack://CodexEditor/./src/components/modules sync ^\\.\\/.*$","webpack://CodexEditor/./src/components/modules/api/blocks.ts","webpack://CodexEditor/./src/components/modules/api/caret.ts","webpack://CodexEditor/./src/components/modules/api/events.ts","webpack://CodexEditor/./src/components/modules/api/index.ts","webpack://CodexEditor/./src/components/modules/api/listeners.ts","webpack://CodexEditor/./src/components/modules/api/notifier.ts","webpack://CodexEditor/./src/components/modules/api/sanitizer.ts","webpack://CodexEditor/./src/components/modules/api/saver.ts","webpack://CodexEditor/./src/components/modules/api/selection.ts","webpack://CodexEditor/./src/components/modules/api/styles.ts","webpack://CodexEditor/./src/components/modules/api/toolbar.ts","webpack://CodexEditor/./src/components/modules/blockEvents.ts","webpack://CodexEditor/./src/components/modules/blockManager.ts","webpack://CodexEditor/./src/components/modules/blockSelection.ts","webpack://CodexEditor/./src/components/modules/caret.ts","webpack://CodexEditor/./src/components/modules/dragNDrop.ts","webpack://CodexEditor/./src/components/modules/events.ts","webpack://CodexEditor/./src/components/modules/listeners.ts","webpack://CodexEditor/./src/components/modules/modificationsObserver.ts","webpack://CodexEditor/./src/components/modules/notifier.ts","webpack://CodexEditor/./src/components/modules/paste.ts","webpack://CodexEditor/./src/components/modules/renderer.ts","webpack://CodexEditor/./src/components/modules/sanitizer.ts","webpack://CodexEditor/./src/components/modules/saver.ts","webpack://CodexEditor/./src/components/modules/shortcuts.ts","webpack://CodexEditor/./src/components/modules/toolbar/blockSettings.ts","webpack://CodexEditor/./src/components/modules/toolbar/index.ts","webpack://CodexEditor/./src/components/modules/toolbar/inline.ts","webpack://CodexEditor/./src/components/modules/toolbar/toolbox.ts","webpack://CodexEditor/./src/components/modules/tools.ts","webpack://CodexEditor/./src/components/modules/ui.ts","webpack://CodexEditor/./src/components/polyfills.ts","webpack://CodexEditor/./src/components/selection.ts","webpack://CodexEditor/./src/components/tools/paragraph/dist/bundle.js","webpack://CodexEditor/./src/components/utils.ts","webpack://CodexEditor/./src/styles/main.css"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","default","revert","args","register","node","assign","arr","Array","isArray","arr2","length","self","ReferenceError","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","fn","this","arguments","apply","err","undefined","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","configurable","writable","protoProps","staticProps","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","constructor","obj","iter","iterator","toString","from","_arr","_n","_d","_e","_s","_i","next","push","_typeof","assertThisInitialized","_setPrototypeOf","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","_typeof2","g","Function","hadRuntime","regeneratorRuntime","getOwnPropertyNames","indexOf","oldRuntime","e","global","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","result","keys","reverse","pop","Context","reset","skipTempReset","prev","sent","_sent","delegate","method","tryEntries","forEach","resetTryEntry","charAt","isNaN","slice","stop","rootRecord","completion","type","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","abrupt","finallyEntry","complete","afterLoc","finish","catch","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","state","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","previousPromise","callInvokeWithMethodAndArg","invoke","unwrapped","return","pushTryEntry","locs","iteratorMethod","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","BACKSPACE","ENTER","ESCAPE","LEFT","UP","RIGHT","DOWN","INSERT","DELETE","u","CMD","SHIFT","ALT","commands","parseShortcutName","element","on","callback","executeShortcut","execute","addEventListener","split","toUpperCase","includes","ctrlKey","metaKey","shiftKey","altKey","a","keyCode","removeEventListener","show","message","getWrapper","document","body","appendChild","time","confirm","prompt","alert","setTimeout","remove","classList","add","hmr","transform","insertInto","locals","map","btoa","unescape","encodeURIComponent","JSON","stringify","sources","sourceRoot","concat","join","all","atob","querySelector","HTMLIFrameElement","contentDocument","head","f","id","refs","parts","x","base","css","media","sourceMap","insertAt","nextSibling","insertBefore","firstChild","before","parentNode","removeChild","splice","b","createElement","attrs","setAttribute","singleton","h","URL","createObjectURL","revokeObjectURL","Blob","rel","convertToAbsoluteUrls","href","styleSheet","cssText","createTextNode","DEBUG","y","filter","Boolean","childNodes","location","protocol","host","pathname","replace","trim","test","style","innerHTML","cancelHandler","okHandler","okText","cancelText","placeholder","inputType","entries","getOwnPropertyDescriptors","String","padEnd","padStart","it","cof","msg","UNSCOPABLES","ArrayProto","forbiddenField","isObject","toObject","toAbsoluteIndex","toLength","copyWithin","start","len","to","end","count","Math","min","inc","aLen","index","endPos","toIObject","IS_INCLUDES","$this","el","fromIndex","ctx","IObject","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","that","val","res","aFunction","memo","isRight","SPECIES","original","speciesConstructor","arraySlice","factories","partArgs","bound","construct","TAG","ARG","tryGet","callee","dP","redefineAll","anInstance","forOf","$iterDefine","step","setSpecies","DESCRIPTORS","fastKey","validate","SIZE","getEntry","_f","k","getConstructor","wrapper","NAME","ADDER","_t","_l","clear","data","delete","v","has","def","setStrong","iterated","kind","_k","getWeak","anObject","createArrayMethod","$has","arrayFind","arrayFindIndex","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","store","set","ufstore","$export","redefine","meta","fails","$iterDetect","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","Base","proto","fixMethod","KEY","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","NEED","core","version","__e","$defineProperty","createDesc","getTime","Date","$toISOString","toISOString","lz","num","NaN","isFinite","RangeError","getUTCFullYear","getUTCMilliseconds","abs","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","toPrimitive","hint","is","getKeys","gOPS","pIE","getSymbols","symbols","isEnum","hide","source","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","MATCH","re","exec","defined","wks","SYMBOL","fns","strfn","rxfn","RegExp","string","ignoreCase","multiline","unicode","sticky","isArrayIter","getIterFn","BREAK","RETURN","ITERATOR","iterFn","__g","documentElement","un","propertyIsEnumerable","Iterators","floor","isRegExp","ret","LIBRARY","$iterCreate","BUGGY","returnThis","DEFAULT","IS_SET","FORCED","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","SAFE_CLOSING","riter","skipClosing","safe","$expm1","expm1","sign","pow","EPSILON","EPSILON32","MAX32","MIN32","fround","$abs","$sign","roundTiesToEven","Infinity","log1p","log","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","onFreeze","macrotask","Observer","MutationObserver","WebKitMutationObserver","process","isNode","last","notify","flush","parent","domain","exit","enter","nextTick","navigator","standalone","promise","toggle","observe","characterData","task","$$resolve","$$reject","$assign","j","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","display","src","contentWindow","open","write","lt","close","Properties","IE8_DOM_DEFINE","Attributes","defineProperties","gOPD","getOwnPropertyDescriptor","gOPN","windowNames","getWindowNames","$keys","hiddenKeys","getOwnPropertySymbols","ObjectProto","arrayIndexOf","names","isEntries","Reflect","ownKeys","$parseFloat","parseFloat","$trim","str","$parseInt","parseInt","ws","hex","radix","newPromiseCapability","promiseCapability","bitmap","SRC","$toString","TPL","inspectSource","isFunction","check","buggy","tag","stat","shared","uid","copyright","toInteger","TO_STRING","pos","charCodeAt","searchString","quot","createHTML","attribute","p1","toLowerCase","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","ceil","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","defer","channel","port","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","now","port2","port1","onmessage","postMessage","importScripts","max","number","valueOf","$typed","$buffer","propertyDesc","toIndex","classof","createArrayIncludes","ArrayIterators","arrayFill","arrayCopyWithin","$DP","$GOPD","Uint8Array","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayIncludes","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","lastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arrayToString","arrayToLocaleString","toLocaleString","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","Uint16Array","buffer","FORCED_SET","toOffset","BYTES","offset","speciesFromList","list","fromList","addGetter","internal","$from","mapfn","mapping","$of","TO_LOCALE_BUG","$toLocaleString","every","fill","find","predicate","findIndex","searchElement","separator","middle","some","comparefn","subarray","begin","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","desc","$TypedArrayPrototype$","CLAMPED","GETTER","SETTER","TypedArray","TAC","ABV","TypedArrayPrototype","addElement","round","setter","$offset","$length","byteLength","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","PROTOTYPE","WRONG_INDEX","BaseBuffer","LN2","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","Typed","TypedArrayConstructors","px","random","userAgent","wksExt","USE_SYMBOL","getIteratorMethod","$every","$filter","$find","forced","$forEach","STRICT","createProperty","$indexOf","NEGATIVE_ZERO","addToUnscopables","Arguments","$reduce","upTo","size","cloned","$some","$sort","toJSON","pv","TO_PRIMITIVE","DateProto","HAS_INSTANCE","FunctionProto","FProto","nameRE","match","strong","sqrt","$acosh","acosh","Number","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","hypot","value1","value2","div","sum","larg","$imul","imul","xn","yn","xl","yl","log10","LOG10E","log2","sinh","tanh","trunc","$Number","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","first","code","digits","_isFinite","isInteger","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","aNumberValue","$toFixed","toFixed","ERROR","multiply","c2","divide","numToString","acc","fractionDigits","z","x2","$fails","$toPrecision","toPrecision","precision","$freeze","$getOwnPropertyDescriptor","$getPrototypeOf","$isExtensible","$isFrozen","$isSealed","$preventExtensions","$seal","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","chain","_c","_v","ok","reaction","exited","handler","fail","_h","onHandleUnhandled","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_w","$resolve","executor","onFulfilled","onRejected","capability","remaining","$index","alreadyCalled","race","rApply","fApply","thisArgument","argumentsList","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","attributes","deleteProperty","Enumerate","enumerate","receiver","setProto","existingDescriptor","ownDesc","$flags","$RegExp","re1","re2","CORRECT_NEW","tiRE","piRE","fiU","proxy","flags","$match","regexp","REPLACE","$replace","searchValue","replaceValue","SEARCH","$search","SPLIT","$split","_split","$push","NPCG","limit","separator2","lastIndex","lastLength","output","lastLastIndex","splitLimit","separatorCopy","$at","codePointAt","$endsWith","endsWith","endPosition","search","color","fromCharCode","$fromCodePoint","fromCodePoint","point","url","raw","callSite","tpl","$startsWith","startsWith","wksDefine","enumKeys","_create","gOPNExt","$JSON","_stringify","HIDDEN","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperties","$propertyIsEnumerable","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","$isView","isView","fin","viewS","viewT","init","InternalMap","each","weak","tmp","$WeakMap","freeze","$includes","getDesc","$values","finally","onFinally","$pad","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","$task","MSIE","boundArgs","setInterval","useSourceMap","item","content","cssMapping","sourceMapping","toComment","sourceURLs","cssWithMappingToString","mediaQuery","alreadyImportedModules","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","HTMLJanitor","config","tagDefinitions","tags","validConfigValues","blockElementNames","isBlockElement","nodeName","inlineElementNames","isInlineElement","getAllowedAttrs","shouldRejectNode","allowedAttrs","shouldRejectAttr","attr","attrName","clean","sandbox","implementation","createHTMLDocument","_sanitize","treeWalker","createTreeWalker","NodeFilter","SHOW_TEXT","SHOW_ELEMENT","SHOW_COMMENT","nodeType","Node","TEXT_NODE","COMMENT_NODE","containsBlockElement","isInline","isNotTopContainer","isNestedBlockElement","keepNestedBlockElements","removeAttribute","previousElementSibling","nextElementSibling","CodexEditor","configuration","_this","_classCallCheck2","onReady","editor","_core","isReady","exportAPI","_this2","field","destroy","moduleInstances","Listeners","removeAll","UI","ModificationsObserver","API","Module","_ref","Editor","DeleteTune","api","CSS","button","buttonDelete","buttonConfirm","nodes","resetConfirmation","setConfirmation","_dom","make","svg","listeners","handleClick","needConfirmation","events","off","blocks","stopPropagation","MoveDownTune","animation","moveDownButton","currentBlockIndex","getCurrentBlockIndex","getBlocksCount","nextBlockElement","getBlockByIndex","nextBlockCoords","getBoundingClientRect","scrollOffset","innerHeight","offsetHeight","top","scrollY","scrollTo","swap","MoveUpTune","moveUpButton","scrollUpOffset","currentBlockElement","previousBlockElement","currentBlockCoords","previousBlockCoords","scrollBy","Block","toolName","toolInstance","toolClass","settings","apiMethods","inputIndex","tool","class","holder","compose","tunes","makeTunes","methodName","params","merge","save","pluginsContent","extractedBlock","measuringStart","performance","finishedExtraction","measuringEnd","_utils","isValid","tunesList","_blockTuneMoveUp","_blockTuneDelete","_blockTuneMoveDown","tune","tunesElement","createDocumentFragment","append","render","contentNode","selector","inputs","array","querySelectorAll","input","contains","sanitize","contentless","emptyText","isEmpty","emptyMedia","hasMedia","focused","selected","wrapperStretched","dropTarget","Blocks","workingArea","children","block","insert","second","secondBlock","deleteCount","previousBlock","insertAdjacentElement","nextBlock","targetBlock","newBlock","contextRequire","filename","Core","onFail","_asyncToGenerator2","_regenerator","_callee","_context","holderId","tools","constructModules","configureModules","modulesToPrepare","_callee3","_context3","prepare","t0","Renderer","_this3","getModulesDiff","diff","moduleName","initialBlock","initialBlockData","sanitizer","hideToolbar","onChange","Dom","tagName","_el$classList","classNames","_toConsumableArray2","width","height","icon","createElementNS","elements","prepend","el1","el2","temp","getElementById","atLast","child","sibling","ELEMENT_NODE","nodeChild","isSingleTag","isNativeInput","getDeepestNode","DOCUMENT_FRAGMENT_NODE","isElement","textContent","leafs","isNodeEmpty","shift","isLeaf","leaf","childElementCount","BoldInlineTool","commandName","buttonActive","buttonModifier","range","execCommand","selection","isActive","queryCommandState","ItalicInlineTool","LinkInlineTool","commandLink","commandUnlink","ENTER_KEY","buttonUnlink","inputShowed","inputOpened","inlineToolbar","toolbar","_selection","enterPressed","parentAnchor","findParentTag","expandToTag","unlink","closeActions","checkState","toggleActions","anchorTag","openActions","hrefAttr","getAttribute","needFocus","focus","clearSavedSelection","clearSaved","restore","preventDefault","validateURL","prepareLink","insertLink","stopImmediatePropagation","link","addProtocol","isInternal","isAnchor","substring","isProtocolRelative","./api","./api/","./api/blocks","./api/blocks.ts","./api/caret","./api/caret.ts","./api/events","./api/events.ts","./api/index","./api/index.ts","./api/listeners","./api/listeners.ts","./api/notifier","./api/notifier.ts","./api/sanitizer","./api/sanitizer.ts","./api/saver","./api/saver.ts","./api/selection","./api/selection.ts","./api/styles","./api/styles.ts","./api/toolbar","./api/toolbar.ts","./blockEvents","./blockEvents.ts","./blockManager","./blockManager.ts","./blockSelection","./blockSelection.ts","./caret","./caret.ts","./dragNDrop","./dragNDrop.ts","./events","./events.ts","./listeners","./listeners.ts","./modificationsObserver","./modificationsObserver.ts","./notifier","./notifier.ts","./paste","./paste.ts","./renderer","./renderer.ts","./sanitizer","./sanitizer.ts","./saver","./saver.ts","./shortcuts","./shortcuts.ts","./toolbar","./toolbar/","./toolbar/blockSettings","./toolbar/blockSettings.ts","./toolbar/index","./toolbar/index.ts","./toolbar/inline","./toolbar/inline.ts","./toolbar/toolbox","./toolbar/toolbox.ts","./tools","./tools.ts","./ui","./ui.ts","webpackContext","req","webpackContextResolve","BlocksAPI","BlockManager","Toolbar","move","blockIndex","removeBlock","Caret","setToBlock","currentBlock","navigatePrevious","status","stretched","stretchBlock","insertNewBlock","CaretAPI","EventsAPI","eventName","Events","caret","ListenersAPI","notifier","NotifierAPI","SanitizerAPI","saver","SaverAPI","SelectionAPI","styles","StylesAPI","classes","ToolbarAPI","eventType","useCapture","options","Notifier","taintString","Sanitizer","Saver","className","_module","inlineToolButton","inlineToolButtonActive","loader","settingsButton","settingsButtonActive","BlockEvents","beforeKeydownProcessing","keyCodes","backspace","arrowRightAndDown","arrowLeftAndUp","TAB","tabPressed","ESC","escapePressed","defaultHandler","needToolbarClosing","cmdKey","clearFocused","BlockSelection","clearSelection","InlineToolbar","handleShowingEvent","direction","opened","Toolbox","plusButton","getBlockByChildNode","Tools","available","apiSettings","IS_ENABLED_LINE_BREAKS","getActiveTool","toolButtonActivate","newCurrent","isInitial","BM","isFirstBlock","canMergeBlocks","isAtStart","blockToMerge","mergeable","createShadow","mergeBlocks","restoreCaret","normalize","navigateNext","toolboxItemSelected","flippingToolboxItems","_blocks","redactor","Proxy","_block","bindEvents","newIndex","composeBlock","blockToMergeIndex","blockToMergeData","mergeWith","firstInput","extractedFragment","extractFragmentFromCaretPosition","text","firstLevelBlock","closest","childNode","caretPosition","_caret","positions","parentFirstLevelBlock","setToInput","needAddInitialBlock","dropPointer","_this$Editor","keydown","mouseUp","keyup","dragOver","dragLeave","isLastBlock","nextBlocks","previousBlocks","needToSelectAll","Shortcuts","handleCommandA","handleCommandC","restoreSelection","anyBlockSelected","selectAllBlocks","selectBlockByIndex","fakeClipboard","cleanHTML","sanitizerConfig","fragment","copyTextToClipboard","removeAllRanges","h1","h2","h3","h4","h5","h6","ol","ul","li","br","img","position","START","END","lastInput","currentInput","nodeToSet","contentLength","getContentLength","delay","setCurrentBlockByChildNode","createRange","selectionStart","selectionEnd","setStart","setEnd","addRange","_range$getBoundingCli","bottom","_window","lastBlock","insertAtEnd","rangeCount","selectRange","getRangeAt","currentBlockInput","deleteContents","cloneRange","selectNodeContents","endContainer","endOffset","extractContents","force","_this$Editor$BlockMan","nextContentfulBlock","nextInput","isAtEnd","_this$Editor$BlockMan2","previousContentfulBlock","previousInput","shadowCaret","sel","newRange","selectNode","current","siblings","contentEditable","isCollapsed","anchorNode","firstNode","firstLetterPosition","leftSiblings","getHigherLevelSiblings","nothingAtLeft","anchorOffset","lastNode","nothingAtRight","rightTrimmedText","DragNDrop","isStartedAtEditor","processDrop","dropEvent","Paste","isAtEditor","processDataTransfer","dataTransfer","_x","dragEvent","subscribers","previousData","currentHandler","newData","allListeners","assignedEventData","alreadyExist","findOne","existingListeners","findAll","foundListeners","foundByEventTargets","findByEventTarget","mutationDebouncer","debounce","DebounceTimer","setObserver","_codexNotifier","toolsTags","tagsByTool","toolsPatterns","toolsFiles","processTool","_ref2","_slicedToArray2","toolPasteConfig","onPaste","getTagsConfig","getFilesConfig","getPatternsConfig","handlePasteEvent","_ref3","isNativeBehaviour","clipboardData","types","setCallback","processTools","isDragNDrop","processFiles","items","plainData","getData","htmlData","customConfig","getAllInlineToolsConfig","cleanData","isHTMLString","processText","blockTools","fileHandler","_toolPasteConfig$file","files","extensions","mimeTypes","isValidMimeType","patternHandler","patterns","_ref4","_ref5","pattern","getBlock","_this4","processFile","file","getAsFile","extension","getFileExtension","foundConfig","_ref6","_ref7","_ref7$","_file$type$split","_file$type$split2","fileType","fileSubtype","foundExt","ext","foundMimeType","mime","_mime$split","_mime$split2","subtype","isHTML","dataToInsert","processHTML","processPlain","isBlock","processSingleBlock","splitBlock","_ref8","_callee6","_context6","_this5","insertBlock","_x6","_x7","_this6","_this$Editor3","initialTool","getNodes","_Tools$blockTools$too","toolTags","getInlineToolsConfig","plain","PATTERN_PROCESSING_MAX_LENGTH","processPattern","blockData","sanitizeConfig","composeToolConfig","deepSanitize","insertedBlock","currentToolSanitizeConfig","substitute","execResult","canReplaceCurrentBlock","_this$Editor6","_this7","reducer","destNode","DocumentFragment","isFragment","_ref9","_ref9$tool","isSubstitutable","blockElements","containsAnotherToolTags","_ref10","containsBlockElements","_ref11","chainData","function","sequence","configCache","inlineToolsConfigCache","blocksData","toolConfig","dataToSanitize","rules","cleanArray","cleanObject","cleanOneItem","sanitizerInstance","createHTMLJanitorInstance","sanitizeGetter","SANITIZE_CONFIG","baseConfig","toolRules","fieldName","rule","toolsConfig","getToolSettings","enableInlineTools","inlineToolName","inline","inlineTool","ruleForItem","arrayItem","currentIterationItem","isRule","_htmlJanitor","extractedData","sanitizeBlocks","sanitizedData","makeOutput","allExtractedData","totalTime","groupCollapsed","extraction","groupEnd","registeredShortcuts","shortcut","newShortcut","_shortcuts","shc","BlockSettings","toolSettings","defaultSettings","wrapperOpened","addToolSettings","addDefaultSettings","closed","renderSettings","renderTunes","actions","blockActionsButtons","settingsToggler","plusButtonClicked","settingsIcon","forceClose","contentOffset","toolbox","offsetTop","toolbarOpened","settingsTogglerClicked","plusButtonHidden","inlineToolbarShowed","buttonsWrapper","actionsWrapper","inlineToolButtonLast","buttons","toolbarVerticalMargin","addTools","allowedToShow","checkToolsState","selectionRect","rect","wrapperOffset","newCoords","filterTools","currentSelection","selectedText","IS_ENABLED_INLINE_TOOLBAR","inlineToolbarSettings","hidden","dataset","lastVisibleButton","addTool","renderActions","toolClicked","internalTools","IS_INLINE","inlineTools","SHORTCUT","enableShortcuts","surround","bold","constructInline","_inlineToolBold","italic","_inlineToolItalic","_inlineToolLink","toolsInstances","allTools","Map","activeButtonIndex","displayedToolsCount","toolsClasses","toolboxOpened","activeButton","toolboxButtonActive","LEAF_DIRECTIONS","IS_DISPLAYED_IN_TOOLBOX","TOOLBAR_ICON","toolboxButton","title","toolboxIcon","enableShortcut","IS_IRREPLACEBLE_TOOL","_possibleConstructorReturn2","_getPrototypeOf2","toolsAvailable","toolsUnavailable","toolsSettings","_inlineTools","sequenceData","getListOfPrepareFunctions","success","fallback","plugin","CONFIG","constructorOptions","toolPreparationList","notImplementedMethods","IS_CONTENTLESS","IS_PASTE_DISALLOWED","paragraph","_bundle","appendSVGSprite","loadStyles","editorWrapper","editorZone","redactorClicked","documentKeydown","documentClicked","defaultBehaviour","keyDownOnEditor","hasPointerToBlock","highlightCurrentNode","clickedOnInlineToolbarButton","clickedInsideofEditor","clickedNode","setToTheLastBlock","isInitialBlock","isEmptyBlock","spriteHolder","_sprite","Element","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","ownerDocument","parentElement","docFrag","SelectionUtils","savedSelectionRange","getSelection","searchDepth","parentTag","focusNode","boundNodes","searchDepthIterable","selectedNode","boundingLeft","boundingTop","boundingWidth","boundingHeight","span","insertNode","spanParent","_CSS","_data","_element","drawView","Util","chains","waitNextBlock","_callee2","successCallback","fallbackCallback","_context2","previousValue","currentValue","_x5","collection","timeout","func","wait","immediate","_arguments","callNow","clearTimeout","CTRL","SPACE"],"mappings":"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","file":"codex-editor.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[\"CodexEditor\"] = factory();\n\telse\n\t\troot[\"CodexEditor\"] = 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 = 0);\n","module.exports = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\n<svg xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n<symbol id=\\\"arrow-down\\\" viewBox=\\\"0 0 14 14\\\">\\r\\n <path transform=\\\"matrix(1 0 0 -1 0 14)\\\" d=\\\"M8.024 4.1v8.6a1.125 1.125 0 0 1-2.25 0V4.1L2.18 7.695A1.125 1.125 0 1 1 .59 6.104L6.103.588c.44-.439 1.151-.439 1.59 0l5.516 5.516a1.125 1.125 0 0 1-1.59 1.59L8.023 4.1z\\\"/>\\r\\n\\n</symbol>\\n<symbol id=\\\"arrow-up\\\" viewBox=\\\"0 0 14 14\\\">\\r\\n <path d=\\\"M8.024 4.1v8.6a1.125 1.125 0 0 1-2.25 0V4.1L2.18 7.695A1.125 1.125 0 1 1 .59 6.104L6.103.588c.44-.439 1.151-.439 1.59 0l5.516 5.516a1.125 1.125 0 0 1-1.59 1.59L8.023 4.1z\\\"/>\\r\\n\\n</symbol>\\n<symbol id=\\\"bold\\\" viewBox=\\\"0 0 13 15\\\">\\r\\n <path d=\\\"M5.996 13.9H1.752c-.613 0-1.05-.137-1.312-.412-.262-.275-.393-.712-.393-1.312V1.737C.047 1.125.18.684.449.416.718.147 1.152.013 1.752.013h4.5a10.5 10.5 0 0 1 1.723.123c.487.082.922.24 1.308.474a3.43 3.43 0 0 1 1.449 1.738c.132.363.199.747.199 1.151 0 1.39-.695 2.406-2.084 3.05 1.825.581 2.737 1.712 2.737 3.391 0 .777-.199 1.477-.596 2.099a3.581 3.581 0 0 1-1.61 1.378c-.424.177-.91.301-1.46.374-.549.073-1.19.109-1.922.109zm-.209-6.167H2.86v4.055h3.022c1.9 0 2.851-.686 2.851-2.056 0-.7-.246-1.21-.739-1.525-.492-.316-1.228-.474-2.207-.474zM2.86 2.125v3.59h2.577c.7 0 1.242-.066 1.624-.198a1.55 1.55 0 0 0 .876-.758c.158-.265.237-.562.237-.89 0-.702-.25-1.167-.748-1.398-.499-.23-1.26-.346-2.283-.346H2.86z\\\"/>\\r\\n\\n</symbol>\\n<symbol id=\\\"cross\\\" viewBox=\\\"0 0 237 237\\\">\\r\\n <path transform=\\\"rotate(45 280.675 51.325)\\\" d=\\\"M191 191V73c0-5.523 4.477-10 10-10h25c5.523 0 10 4.477 10 10v118h118c5.523 0 10 4.477 10 10v25c0 5.523-4.477 10-10 10H236v118c0 5.523-4.477 10-10 10h-25c-5.523 0-10-4.477-10-10V236H73c-5.523 0-10-4.477-10-10v-25c0-5.523 4.477-10 10-10h118z\\\"/>\\r\\n\\n</symbol>\\n<symbol id=\\\"dots\\\" viewBox=\\\"0 0 18 4\\\">\\r\\n <g fill-rule=\\\"evenodd\\\">\\r\\n <circle cx=\\\"9\\\" cy=\\\"2\\\" r=\\\"2\\\"/>\\r\\n <circle cx=\\\"2\\\" cy=\\\"2\\\" r=\\\"2\\\"/>\\r\\n <circle cx=\\\"16\\\" cy=\\\"2\\\" r=\\\"2\\\"/>\\r\\n </g>\\r\\n\\n</symbol>\\n<symbol id=\\\"italic\\\" viewBox=\\\"0 0 6 15\\\">\\r\\n <path d=\\\"M4 5.2l-1.368 7.474c-.095.518-.29.91-.585 1.175a1.468 1.468 0 0 1-1.01.398c-.379 0-.662-.136-.85-.407-.186-.272-.234-.66-.141-1.166L1.4 5.276c.093-.511.282-.896.567-1.155a1.43 1.43 0 0 1 .994-.389c.38 0 .668.13.867.389.199.259.256.618.172 1.08zm-.79-2.67c-.36 0-.648-.111-.863-.332-.215-.221-.286-.534-.212-.938.067-.366.253-.668.559-.905A1.57 1.57 0 0 1 3.673 0c.334 0 .612.107.831.322.22.215.292.527.217.938-.073.398-.256.709-.55.933a1.55 1.55 0 0 1-.961.336z\\\"/>\\r\\n\\n</symbol>\\n<symbol id=\\\"link\\\" viewBox=\\\"0 0 15 14\\\">\\r\\n <path transform=\\\"rotate(-45 11.83 6.678)\\\" d=\\\"M11.332 4.013a51.07 51.07 0 0 1-2.28.001A1.402 1.402 0 0 0 7.7 2.25H3.65a1.4 1.4 0 1 0 0 2.8h.848c.206.86.693 1.61 1.463 2.25H3.65a3.65 3.65 0 1 1 0-7.3H7.7a3.65 3.65 0 0 1 3.632 4.013zM10.9 0h2a3.65 3.65 0 0 1 0 7.3H8.85a3.65 3.65 0 0 1-3.632-4.011A62.68 62.68 0 0 1 7.5 3.273 1.401 1.401 0 0 0 8.85 5.05h4.05a1.4 1.4 0 0 0 0-2.8h-.48C12.274 1.664 11.694.785 10.9 0z\\\"/>\\r\\n\\n</symbol>\\n<symbol id=\\\"plus\\\" viewBox=\\\"0 0 14 14\\\">\\r\\n <path d=\\\"M8.05 5.8h4.625a1.125 1.125 0 0 1 0 2.25H8.05v4.625a1.125 1.125 0 0 1-2.25 0V8.05H1.125a1.125 1.125 0 0 1 0-2.25H5.8V1.125a1.125 1.125 0 0 1 2.25 0V5.8z\\\"/>\\r\\n\\n</symbol>\\n<symbol id=\\\"unlink\\\" viewBox=\\\"0 0 16 18\\\">\\r\\n <path transform=\\\"rotate(-45 8.358 11.636)\\\" d=\\\"M9.14 9.433c.008-.12-.087-.686-.112-.81a1.4 1.4 0 0 0-1.64-1.106l-3.977.772a1.4 1.4 0 0 0 .535 2.749l.935-.162s.019 1.093.592 2.223l-1.098.148A3.65 3.65 0 1 1 2.982 6.08l3.976-.773c1.979-.385 3.838.919 4.28 2.886.51 2.276-1.084 2.816-1.073 2.935.011.12-.394-1.59-1.026-1.696zm3.563-.875l2.105 3.439a3.65 3.65 0 0 1-6.19 3.868L6.47 12.431c-1.068-1.71-.964-2.295-.49-3.07.067-.107 1.16-1.466 1.48-.936-.12.036.9 1.33.789 1.398-.656.41-.28.76.13 1.415l2.145 3.435a1.4 1.4 0 0 0 2.375-1.484l-1.132-1.941c.42-.435 1.237-1.054.935-2.69zm1.88-2.256h3.4a1.125 1.125 0 0 1 0 2.25h-3.4a1.125 1.125 0 0 1 0-2.25zM11.849.038c.62 0 1.125.503 1.125 1.125v3.4a1.125 1.125 0 0 1-2.25 0v-3.4c0-.622.503-1.125 1.125-1.125z\\\"/>\\r\\n\\n</symbol></svg>\"","\"use strict\";\n\nrequire(\"core-js/es6\");\n\nrequire(\"core-js/fn/array/includes\");\n\nrequire(\"core-js/fn/string/pad-start\");\n\nrequire(\"core-js/fn/string/pad-end\");\n\nrequire(\"core-js/fn/symbol/async-iterator\");\n\nrequire(\"core-js/fn/object/get-own-property-descriptors\");\n\nrequire(\"core-js/fn/object/values\");\n\nrequire(\"core-js/fn/object/entries\");\n\nrequire(\"core-js/fn/promise/finally\");\n\nrequire(\"core-js/web\");\n\nrequire(\"regenerator-runtime/runtime\");","require(\"./lib/noConflict\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = register;\nexports.revert = revert;\n\nfunction register() {}\n\nfunction revert() {}","exports = module.exports = function (...args) {\n return register(...args);\n};\n\nexports.__esModule = true;\n\nconst node = require(\"./node\");\n\nconst register = node.default;\nObject.assign(exports, node);","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() {\n return this || (typeof self === \"object\" && self);\n})() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() {\n return this || (typeof self === \"object\" && self);\n })() || Function(\"return this\")()\n);\n","module.exports = require(\"regenerator-runtime\");\n","/*!\n * Library for handling keyboard shortcuts\n * @copyright undefined\n * @license MIT\n * @author CodeX (https://ifmo.su)\n * @version 1.0.0\n */\n!function(e,t){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)(\"object\"==typeof exports?exports:e)[r]=n[r]}}(\"undefined\"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=0)}([function(e,t,n){\"use strict\";function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var o=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),i={0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,A:65,B:66,C:67,D:68,E:69,F:70,G:71,H:72,I:73,J:74,K:75,L:76,M:77,N:78,O:79,P:80,Q:81,R:82,S:83,T:84,U:85,V:86,W:87,X:88,Y:89,Z:90,BACKSPACE:8,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,INSERT:45,DELETE:46},u={CMD:[\"CMD\",\"CONTROL\",\"COMMAND\",\"WINDOWS\",\"CTRL\"],SHIFT:[\"SHIFT\"],ALT:[\"ALT\",\"OPTION\"]},c=function(){function e(t){var n=this;r(this,e),this.commands={},this.keys={},this.parseShortcutName(t.name),this.element=t.on,this.callback=t.callback,this.executeShortcut=function(e){n.execute(e)},this.element.addEventListener(\"keydown\",this.executeShortcut,!1)}return o(e,[{key:\"parseShortcutName\",value:function(e){e=e.split(\"+\");for(var t=0;t<e.length;t++)if(e[t]=e[t].toUpperCase(),e[t].length>1)for(var n in u)u[n].includes(e[t])&&(this.commands[n]=!0);else this.keys[e[t]]=!0}},{key:\"execute\",value:function(e){var t=e.ctrlKey||e.metaKey,n=e.shiftKey,r=e.altKey,o={CMD:t,SHIFT:n,ALT:r},u=void 0,c=!0;for(u in this.commands)c=c&&o[u];var a=void 0,s=!0;for(a in this.keys)s=s&&e.keyCode===i[a];c&&s&&this.callback(e)}},{key:\"remove\",value:function(){this.element.removeEventListener(\"keydown\",this.executeShortcut)}}]),e}();t.default=c}])});","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.notifier=e():t.notifier=e()}(window,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"/\",n(n.s=0)}([function(t,e,n){\"use strict\";n(1),\n/*!\n * Codex JavaScript Notification module\n * https://github.com/codex-team/js-notifier\n */\nt.exports=function(){var t=n(6),e=\"cdx-notify--bounce-in\",r=null;return{show:function(n){if(n.message){!function(){if(r)return!0;r=t.getWrapper(),document.body.appendChild(r)}();var o=null,i=n.time||8e3;switch(n.type){case\"confirm\":o=t.confirm(n);break;case\"prompt\":o=t.prompt(n);break;default:o=t.alert(n),window.setTimeout(function(){o.remove()},i)}r.appendChild(o),o.classList.add(e)}}}}()},function(t,e,n){var r=n(2);\"string\"==typeof r&&(r=[[t.i,r,\"\"]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(4)(r,o);r.locals&&(t.exports=r.locals)},function(t,e,n){(t.exports=n(3)(!1)).push([t.i,'.cdx-notify--error{background:#fffbfb!important}.cdx-notify--error::before{background:#fb5d5d!important}.cdx-notify__input{max-width:130px;padding:5px 10px;background:#f7f7f7;border:0;border-radius:3px;font-size:13px;color:#656b7c;outline:0}.cdx-notify__input:-ms-input-placeholder{color:#656b7c}.cdx-notify__input::placeholder{color:#656b7c}.cdx-notify__input:focus:-ms-input-placeholder{color:rgba(101,107,124,.3)}.cdx-notify__input:focus::placeholder{color:rgba(101,107,124,.3)}.cdx-notify__button{border:none;border-radius:3px;font-size:13px;padding:5px 10px;cursor:pointer}.cdx-notify__button:last-child{margin-left:10px}.cdx-notify__button--cancel{background:#f2f5f7;box-shadow:0 2px 1px 0 rgba(16,19,29,0);color:#656b7c}.cdx-notify__button--cancel:hover{background:#eee}.cdx-notify__button--confirm{background:#34c992;box-shadow:0 1px 1px 0 rgba(18,49,35,.05);color:#fff}.cdx-notify__button--confirm:hover{background:#33b082}.cdx-notify__btns-wrapper{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;margin-top:5px}.cdx-notify__cross{position:absolute;top:5px;right:5px;width:10px;height:10px;padding:5px;opacity:.54;cursor:pointer}.cdx-notify__cross::after,.cdx-notify__cross::before{content:\\'\\';position:absolute;left:9px;top:5px;height:12px;width:2px;background:#575d67}.cdx-notify__cross::before{transform:rotate(-45deg)}.cdx-notify__cross::after{transform:rotate(45deg)}.cdx-notify__cross:hover{opacity:1}.cdx-notifies{position:fixed;z-index:2;bottom:20px;left:20px;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Oxygen,Ubuntu,Cantarell,\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif}.cdx-notify{position:relative;width:220px;margin-top:15px;padding:13px 16px;background:#fff;box-shadow:0 11px 17px 0 rgba(23,32,61,.13);border-radius:5px;font-size:14px;line-height:1.4em;word-wrap:break-word}.cdx-notify::before{content:\\'\\';position:absolute;display:block;top:0;left:0;width:3px;height:calc(100% - 6px);margin:3px;border-radius:5px;background:0 0}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}100%{transform:scale(1)}}.cdx-notify--bounce-in{animation-name:bounceIn;animation-duration:.6s;animation-iteration-count:1}.cdx-notify--success{background:#fafffe!important}.cdx-notify--success::before{background:#41ffb1!important}',\"\"])},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||\"\",r=t[3];if(!r)return n;if(e&&\"function\"==typeof btoa){var o=function(t){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+\" */\"}(r),i=r.sources.map(function(t){return\"/*# sourceURL=\"+r.sourceRoot+t+\" */\"});return[n].concat(i).concat([o]).join(\"\\n\")}return[n].join(\"\\n\")}(e,t);return e[2]?\"@media \"+e[2]+\"{\"+n+\"}\":n}).join(\"\")},e.i=function(t,n){\"string\"==typeof t&&(t=[[null,t,\"\"]]);for(var r={},o=0;o<this.length;o++){var i=this[o][0];\"number\"==typeof i&&(r[i]=!0)}for(o=0;o<t.length;o++){var a=t[o];\"number\"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]=\"(\"+a[2]+\") and (\"+n+\")\"),e.push(a))}},e}},function(t,e,n){var r={},o=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),i=function(t){var e={};return function(t){if(\"function\"==typeof t)return t();if(void 0===e[t]){var n=function(t){return document.querySelector(t)}.call(this,t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}}(),a=null,c=0,s=[],f=n(5);function d(t,e){for(var n=0;n<t.length;n++){var o=t[n],i=r[o.id];if(i){i.refs++;for(var a=0;a<i.parts.length;a++)i.parts[a](o.parts[a]);for(;a<o.parts.length;a++)i.parts.push(x(o.parts[a],e))}else{var c=[];for(a=0;a<o.parts.length;a++)c.push(x(o.parts[a],e));r[o.id]={id:o.id,refs:1,parts:c}}}}function u(t,e){for(var n=[],r={},o=0;o<t.length;o++){var i=t[o],a=e.base?i[0]+e.base:i[0],c={css:i[1],media:i[2],sourceMap:i[3]};r[a]?r[a].parts.push(c):n.push(r[a]={id:a,parts:[c]})}return n}function l(t,e){var n=i(t.insertInto);if(!n)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");var r=s[s.length-1];if(\"top\"===t.insertAt)r?r.nextSibling?n.insertBefore(e,r.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),s.push(e);else if(\"bottom\"===t.insertAt)n.appendChild(e);else{if(\"object\"!=typeof t.insertAt||!t.insertAt.before)throw new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");var o=i(t.insertInto+\" \"+t.insertAt.before);n.insertBefore(e,o)}}function p(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t);var e=s.indexOf(t);e>=0&&s.splice(e,1)}function b(t){var e=document.createElement(\"style\");return void 0===t.attrs.type&&(t.attrs.type=\"text/css\"),m(e,t.attrs),l(t,e),e}function m(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function x(t,e){var n,r,o,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var s=c++;n=a||(a=b(e)),r=h.bind(null,n,s,!1),o=h.bind(null,n,s,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(n=function(t){var e=document.createElement(\"link\");return void 0===t.attrs.type&&(t.attrs.type=\"text/css\"),t.attrs.rel=\"stylesheet\",m(e,t.attrs),l(t,e),e}(e),r=function(t,e,n){var r=n.css,o=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&o;(e.convertToAbsoluteUrls||i)&&(r=f(r));o&&(r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\");var a=new Blob([r],{type:\"text/css\"}),c=t.href;t.href=URL.createObjectURL(a),c&&URL.revokeObjectURL(c)}.bind(null,n,e),o=function(){p(n),n.href&&URL.revokeObjectURL(n.href)}):(n=b(e),r=function(t,e){var n=e.css,r=e.media;r&&t.setAttribute(\"media\",r);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),o=function(){p(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}t.exports=function(t,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");(e=e||{}).attrs=\"object\"==typeof e.attrs?e.attrs:{},e.singleton||\"boolean\"==typeof e.singleton||(e.singleton=o()),e.insertInto||(e.insertInto=\"head\"),e.insertAt||(e.insertAt=\"bottom\");var n=u(t,e);return d(n,e),function(t){for(var o=[],i=0;i<n.length;i++){var a=n[i];(c=r[a.id]).refs--,o.push(c)}t&&d(u(t,e),e);for(i=0;i<o.length;i++){var c;if(0===(c=o[i]).refs){for(var s=0;s<c.parts.length;s++)c.parts[s]();delete r[c.id]}}}};var y=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join(\"\\n\")}}();function h(t,e,n,r){var o=n?\"\":r.css;if(t.styleSheet)t.styleSheet.cssText=y(e,o);else{var i=document.createTextNode(o),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}},function(t,e){t.exports=function(t){var e=\"undefined\"!=typeof window&&window.location;if(!e)throw new Error(\"fixUrls requires window.location\");if(!t||\"string\"!=typeof t)return t;var n=e.protocol+\"//\"+e.host,r=n+e.pathname.replace(/\\/[^\\/]*$/,\"/\");return t.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi,function(t,e){var o,i=e.trim().replace(/^\"(.*)\"$/,function(t,e){return e}).replace(/^'(.*)'$/,function(t,e){return e});return/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(i)?t:(o=0===i.indexOf(\"//\")?i:0===i.indexOf(\"/\")?n+i:r+i.replace(/^\\.\\//,\"\"),\"url(\"+JSON.stringify(o)+\")\")})}},function(t,e,n){\"use strict\";t.exports=function(){var t=\"cdx-notifies\",e=\"cdx-notify\",n=\"cdx-notify__cross\",r=\"cdx-notify__button--confirm\",o=\"cdx-notify__button--cancel\",i=\"cdx-notify__input\",a=\"cdx-notify__button\",c=\"cdx-notify__btns-wrapper\",s=function(t){var r=document.createElement(\"DIV\"),o=document.createElement(\"DIV\"),i=t.message,a=t.style;return r.classList.add(e),a&&r.classList.add(e+\"--\"+a),r.innerHTML=i,o.classList.add(n),o.addEventListener(\"click\",r.remove.bind(r)),r.appendChild(o),r};return{alert:s,confirm:function(t){var e=s(t),i=document.createElement(\"div\"),f=document.createElement(\"button\"),d=document.createElement(\"button\"),u=e.querySelector(\".\"+n),l=t.cancelHandler,p=t.okHandler;return i.classList.add(c),f.innerHTML=t.okText||\"Confirm\",d.innerHTML=t.cancelText||\"Cancel\",f.classList.add(a),d.classList.add(a),f.classList.add(r),d.classList.add(o),l&&\"function\"==typeof l&&(d.addEventListener(\"click\",l),u.addEventListener(\"click\",l)),p&&\"function\"==typeof p&&f.addEventListener(\"click\",p),f.addEventListener(\"click\",e.remove.bind(e)),d.addEventListener(\"click\",e.remove.bind(e)),i.appendChild(f),i.appendChild(d),e.appendChild(i),e},prompt:function(t){var e=s(t),o=document.createElement(\"div\"),f=document.createElement(\"button\"),d=document.createElement(\"input\"),u=e.querySelector(\".\"+n),l=t.cancelHandler,p=t.okHandler;return o.classList.add(c),f.innerHTML=t.okText||\"Ok\",f.classList.add(a),f.classList.add(r),d.classList.add(i),t.placeholder&&d.setAttribute(\"placeholder\",t.placeholder),t.default&&(d.value=t.default),t.inputType&&(d.type=t.inputType),l&&\"function\"==typeof l&&u.addEventListener(\"click\",l),p&&\"function\"==typeof p&&f.addEventListener(\"click\",function(){p(d.value)}),f.addEventListener(\"click\",e.remove.bind(e)),o.appendChild(d),o.appendChild(f),e.appendChild(o),e},getWrapper:function(){var e=document.createElement(\"DIV\");return e.classList.add(t),e}}}()}])});","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($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++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\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 for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n 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 = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n 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 validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\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(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\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 $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\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","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\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 setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\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 setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\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 var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(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 return 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};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(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\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* 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 dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\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 gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = 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 ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) 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 ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '&quot;') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\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};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = 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 invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(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 (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\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 (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","require('./_set-species')('Array');\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\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 && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\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 (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may 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 (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\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 values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(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.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\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 forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n","// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n","// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n","// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = require('./_is-regexp');\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\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($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.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","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","require('./_wks-define')('asyncIterator');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define('html-janitor', factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.HTMLJanitor = factory();\n }\n}(this, function () {\n\n /**\n * @param {Object} config.tags Dictionary of allowed tags.\n * @param {boolean} config.keepNestedBlockElements Default false.\n */\n function HTMLJanitor(config) {\n\n var tagDefinitions = config['tags'];\n var tags = Object.keys(tagDefinitions);\n\n var validConfigValues = tags\n .map(function(k) { return typeof tagDefinitions[k]; })\n .every(function(type) { return type === 'object' || type === 'boolean' || type === 'function'; });\n\n if(!validConfigValues) {\n throw new Error(\"The configuration was invalid\");\n }\n\n this.config = config;\n }\n\n // TODO: not exhaustive?\n var blockElementNames = ['P', 'LI', 'TD', 'TH', 'DIV', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'PRE'];\n function isBlockElement(node) {\n return blockElementNames.indexOf(node.nodeName) !== -1;\n }\n\n var inlineElementNames = ['A', 'B', 'STRONG', 'I', 'EM', 'SUB', 'SUP', 'U', 'STRIKE'];\n function isInlineElement(node) {\n return inlineElementNames.indexOf(node.nodeName) !== -1;\n }\n\n HTMLJanitor.prototype.clean = function (html) {\n const sandbox = document.implementation.createHTMLDocument();\n const root = sandbox.createElement(\"div\");\n root.innerHTML = html;\n\n this._sanitize(sandbox, root);\n\n return root.innerHTML;\n };\n\n HTMLJanitor.prototype._sanitize = function (document, parentNode) {\n var treeWalker = createTreeWalker(document, parentNode);\n var node = treeWalker.firstChild();\n\n if (!node) { return; }\n\n do {\n if (node.nodeType === Node.TEXT_NODE) {\n // If this text node is just whitespace and the previous or next element\n // sibling is a block element, remove it\n // N.B.: This heuristic could change. Very specific to a bug with\n // `contenteditable` in Firefox: http://jsbin.com/EyuKase/1/edit?js,output\n // FIXME: make this an option?\n if (node.data.trim() === ''\n && ((node.previousElementSibling && isBlockElement(node.previousElementSibling))\n || (node.nextElementSibling && isBlockElement(node.nextElementSibling)))) {\n parentNode.removeChild(node);\n this._sanitize(document, parentNode);\n break;\n } else {\n continue;\n }\n }\n\n // Remove all comments\n if (node.nodeType === Node.COMMENT_NODE) {\n parentNode.removeChild(node);\n this._sanitize(document, parentNode);\n break;\n }\n\n var isInline = isInlineElement(node);\n var containsBlockElement;\n if (isInline) {\n containsBlockElement = Array.prototype.some.call(node.childNodes, isBlockElement);\n }\n\n // Block elements should not be nested (e.g. <li><p>...); if\n // they are, we want to unwrap the inner block element.\n var isNotTopContainer = !! parentNode.parentNode;\n var isNestedBlockElement =\n isBlockElement(parentNode) &&\n isBlockElement(node) &&\n isNotTopContainer;\n\n var nodeName = node.nodeName.toLowerCase();\n\n var allowedAttrs = getAllowedAttrs(this.config, nodeName, node);\n\n var isInvalid = isInline && containsBlockElement;\n\n // Drop tag entirely according to the whitelist *and* if the markup\n // is invalid.\n if (isInvalid || shouldRejectNode(node, allowedAttrs)\n || (!this.config.keepNestedBlockElements && isNestedBlockElement)) {\n // Do not keep the inner text of SCRIPT/STYLE elements.\n if (! (node.nodeName === 'SCRIPT' || node.nodeName === 'STYLE')) {\n while (node.childNodes.length > 0) {\n parentNode.insertBefore(node.childNodes[0], node);\n }\n }\n parentNode.removeChild(node);\n\n this._sanitize(document, parentNode);\n break;\n }\n\n // Sanitize attributes\n for (var a = 0; a < node.attributes.length; a += 1) {\n var attr = node.attributes[a];\n\n if (shouldRejectAttr(attr, allowedAttrs, node)) {\n node.removeAttribute(attr.name);\n // Shift the array to continue looping.\n a = a - 1;\n }\n }\n\n // Sanitize children\n this._sanitize(document, node);\n\n } while ((node = treeWalker.nextSibling()));\n };\n\n function createTreeWalker(document, node) {\n return document.createTreeWalker(node,\n NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT,\n null, false);\n }\n\n function getAllowedAttrs(config, nodeName, node){\n if (typeof config.tags[nodeName] === 'function') {\n return config.tags[nodeName](node);\n } else {\n return config.tags[nodeName];\n }\n }\n\n function shouldRejectNode(node, allowedAttrs){\n if (typeof allowedAttrs === 'undefined') {\n return true;\n } else if (typeof allowedAttrs === 'boolean') {\n return !allowedAttrs;\n }\n\n return false;\n }\n\n function shouldRejectAttr(attr, allowedAttrs, node){\n var attrName = attr.name.toLowerCase();\n\n if (allowedAttrs === true){\n return false;\n } else if (typeof allowedAttrs[attrName] === 'function'){\n return !allowedAttrs[attrName](attr.value, node);\n } else if (typeof allowedAttrs[attrName] === 'undefined'){\n return true;\n } else if (allowedAttrs[attrName] === false) {\n return true;\n } else if (typeof allowedAttrs[attrName] === 'string') {\n return (allowedAttrs[attrName] !== attr.value);\n }\n\n return false;\n }\n\n return HTMLJanitor;\n\n}));\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","'use strict';\r\n\r\nimport {EditorConfig} from '../types';\r\n\r\ndeclare const VERSION: string;\r\n\r\n/**\r\n * Apply polyfills\r\n */\r\nimport '@babel/register';\r\n\r\nimport 'components/polyfills';\r\nimport Core from './components/core';\r\n\r\n/**\r\n * Codex Editor\r\n *\r\n * Short Description (눈_눈;)\r\n * @version 2.0\r\n *\r\n * @author CodeX-Team <https://ifmo.su>\r\n */\r\nexport default class CodexEditor {\r\n /**\r\n * Promise that resolves when core modules are ready and UI is rendered on the page\r\n */\r\n public isReady: Promise<void>;\r\n\r\n /**\r\n * Stores destroy method implementation.\r\n * Clear heap occupied by Editor and remove UI components from the DOM.\r\n */\r\n public destroy: () => void;\r\n\r\n /** Editor version */\r\n static get version(): string {\r\n return VERSION;\r\n }\r\n\r\n /**\r\n * @constructor\r\n *\r\n * @param {EditorConfig|String|undefined} [configuration] - user configuration\r\n */\r\n public constructor(configuration?: EditorConfig|string) {\r\n /**\r\n * Set default onReady function\r\n */\r\n let onReady = () => {};\r\n\r\n /**\r\n * If `onReady` was passed in `configuration` then redefine onReady function\r\n */\r\n if (typeof configuration === 'object' && typeof configuration.onReady === 'function') {\r\n onReady = configuration.onReady;\r\n }\r\n\r\n /**\r\n * Create a CodeX Editor instance\r\n */\r\n const editor = new Core(configuration);\r\n\r\n /**\r\n * We need to export isReady promise in the constructor\r\n * as it can be used before other API methods are exported\r\n * @type {Promise<void>}\r\n */\r\n this.isReady = editor.isReady.then(() => {\r\n this.exportAPI(editor);\r\n onReady();\r\n });\r\n }\r\n\r\n /**\r\n * Export external API methods\r\n *\r\n * @param editor\r\n */\r\n public exportAPI(editor: Core): void {\r\n const fieldsToExport = [ 'configuration' ];\r\n const destroy = () => {\r\n editor.moduleInstances.Listeners.removeAll();\r\n editor.moduleInstances.UI.destroy();\r\n editor.moduleInstances.ModificationsObserver.destroy();\r\n editor = null;\r\n\r\n for (const field in this) {\r\n if (this.hasOwnProperty(field)) {\r\n delete this[field];\r\n }\r\n }\r\n\r\n Object.setPrototypeOf(this, null);\r\n };\r\n\r\n fieldsToExport.forEach((field) => {\r\n this[field] = editor[field];\r\n });\r\n\r\n this.destroy = destroy;\r\n\r\n Object.setPrototypeOf(this, editor.moduleInstances.API.methods);\r\n\r\n delete this.exportAPI;\r\n }\r\n}\r\n","import {EditorModules} from '../types-internal/editor-modules';\r\nimport {EditorConfig} from '../../types';\r\nimport {ModuleConfig} from '../types-internal/module-config';\r\n\r\n/**\r\n * @abstract\r\n * @class Module\r\n * @classdesc All modules inherits from this class.\r\n *\r\n * @typedef {Module} Module\r\n * @property {Object} config - Editor user settings\r\n * @property {EditorModules} Editor - List of Editor modules\r\n */\r\nexport default class Module {\r\n\r\n /**\r\n * Editor modules list\r\n * @type {EditorModules}\r\n */\r\n protected Editor: EditorModules;\r\n\r\n /**\r\n * Editor configuration object\r\n * @type {EditorConfig}\r\n */\r\n protected config: EditorConfig;\r\n\r\n /**\r\n * @constructor\r\n * @param {EditorConfig}\r\n */\r\n constructor({config}: ModuleConfig) {\r\n if (new.target === Module) {\r\n throw new TypeError('Constructors for abstract class Module are not allowed.');\r\n }\r\n\r\n this.config = config;\r\n }\r\n\r\n /**\r\n * Editor modules setter\r\n * @param {EditorModules} Editor\r\n */\r\n set state(Editor: EditorModules) {\r\n this.Editor = Editor;\r\n }\r\n}\r\n","/**\r\n * @class DeleteTune\r\n * @classdesc Editor's default tune that moves up selected block\r\n *\r\n * @copyright <CodeX Team> 2018\r\n */\r\nimport {API, BlockTune} from '../../../types';\r\nimport $ from '../dom';\r\n\r\nexport default class DeleteTune implements BlockTune {\r\n\r\n /**\r\n * Property that contains CodeX Editor API methods\r\n * @see {docs/api.md}\r\n */\r\n private readonly api: API;\r\n\r\n /**\r\n * Styles\r\n * @type {{wrapper: string}}\r\n */\r\n private CSS = {\r\n wrapper: 'ass',\r\n button: 'ce-settings__button',\r\n buttonDelete: 'ce-settings__button--delete',\r\n buttonConfirm: 'ce-settings__button--confirm',\r\n };\r\n\r\n /**\r\n * Delete confirmation\r\n */\r\n private needConfirmation: boolean;\r\n\r\n /**\r\n * set false confirmation state\r\n */\r\n private resetConfirmation: () => void;\r\n\r\n /**\r\n * Tune nodes\r\n */\r\n private nodes: {button: HTMLElement} = {\r\n button: null,\r\n };\r\n\r\n /**\r\n * DeleteTune constructor\r\n *\r\n * @param {Object} api\r\n */\r\n constructor({api}: {api: API}) {\r\n this.api = api;\r\n\r\n this.resetConfirmation = () => {\r\n this.setConfirmation(false);\r\n };\r\n }\r\n\r\n /**\r\n * Create \"Delete\" button and add click event listener\r\n * @returns [Element}\r\n */\r\n public render() {\r\n this.nodes.button = $.make('div', [this.CSS.button, this.CSS.buttonDelete], {});\r\n this.nodes.button.appendChild($.svg('cross', 12, 12));\r\n this.api.listeners.on(this.nodes.button, 'click', (event: MouseEvent) => this.handleClick(event), false);\r\n return this.nodes.button;\r\n }\r\n\r\n /**\r\n * Delete block conditions passed\r\n * @param {MouseEvent} event\r\n */\r\n public handleClick(event: MouseEvent): void {\r\n\r\n /**\r\n * if block is not waiting the confirmation, subscribe on block-settings-closing event to reset\r\n * otherwise delete block\r\n */\r\n if (!this.needConfirmation) {\r\n this.setConfirmation(true);\r\n\r\n /**\r\n * Subscribe on event.\r\n * When toolbar block settings is closed but block deletion is not confirmed,\r\n * then reset confirmation state\r\n */\r\n this.api.events.on('block-settings-closed', this.resetConfirmation);\r\n\r\n } else {\r\n\r\n /**\r\n * Unsubscribe from block-settings closing event\r\n */\r\n this.api.events.off('block-settings-closed', this.resetConfirmation);\r\n\r\n this.api.blocks.delete();\r\n\r\n /**\r\n * Prevent firing ui~documentClicked that can drop currentBlock pointer\r\n */\r\n event.stopPropagation();\r\n }\r\n }\r\n\r\n /**\r\n * change tune state\r\n */\r\n private setConfirmation(state): void {\r\n this.needConfirmation = state;\r\n this.nodes.button.classList.add(this.CSS.buttonConfirm);\r\n }\r\n\r\n}\r\n","/**\r\n * @class MoveDownTune\r\n * @classdesc Editor's default tune - Moves down highlighted block\r\n *\r\n * @copyright <CodeX Team> 2018\r\n */\r\n\r\nimport $ from '../dom';\r\nimport {API, BlockTune} from '../../../types';\r\n\r\nexport default class MoveDownTune implements BlockTune {\r\n /**\r\n * Property that contains CodeX Editor API methods\r\n * @see {api.md}\r\n */\r\n private readonly api: API;\r\n\r\n /**\r\n * Styles\r\n * @type {{wrapper: string}}\r\n */\r\n private CSS = {\r\n button: 'ce-settings__button',\r\n wrapper: 'ce-tune-move-down',\r\n animation: 'wobble',\r\n };\r\n\r\n /**\r\n * MoveDownTune constructor\r\n *\r\n * @param {Object} api\r\n */\r\n public constructor({api}) {\r\n this.api = api;\r\n }\r\n\r\n /**\r\n * Return 'move down' button\r\n */\r\n public render() {\r\n const moveDownButton = $.make('div', [this.CSS.button, this.CSS.wrapper], {});\r\n moveDownButton.appendChild($.svg('arrow-down', 14, 14));\r\n this.api.listeners.on(\r\n moveDownButton,\r\n 'click',\r\n (event) => this.handleClick(event as MouseEvent, moveDownButton),\r\n false,\r\n );\r\n return moveDownButton;\r\n }\r\n\r\n /**\r\n * Handle clicks on 'move down' button\r\n * @param {MouseEvent} event\r\n * @param {HTMLElement} button\r\n */\r\n public handleClick(event: MouseEvent, button: HTMLElement) {\r\n\r\n const currentBlockIndex = this.api.blocks.getCurrentBlockIndex();\r\n\r\n // If Block is last do nothing\r\n if (currentBlockIndex === this.api.blocks.getBlocksCount() - 1) {\r\n button.classList.add(this.CSS.animation);\r\n\r\n window.setTimeout( () => {\r\n button.classList.remove(this.CSS.animation);\r\n }, 500);\r\n return;\r\n }\r\n\r\n const nextBlockElement = this.api.blocks.getBlockByIndex(currentBlockIndex + 1);\r\n const nextBlockCoords = nextBlockElement.getBoundingClientRect();\r\n\r\n let scrollOffset = Math.abs(window.innerHeight - nextBlockElement.offsetHeight);\r\n\r\n /**\r\n * Next block ends on screen.\r\n * Increment scroll by next block's height to save element onscreen-position\r\n */\r\n if (nextBlockCoords.top < window.innerHeight) {\r\n\r\n scrollOffset = window.scrollY + nextBlockElement.offsetHeight;\r\n\r\n }\r\n\r\n window.scrollTo(0, scrollOffset);\r\n\r\n /** Change blocks positions */\r\n this.api.blocks.swap(currentBlockIndex, currentBlockIndex + 1);\r\n\r\n }\r\n}\r\n","/**\r\n * @class MoveUpTune\r\n * @classdesc Editor's default tune that moves up selected block\r\n *\r\n * @copyright <CodeX Team> 2018\r\n */\r\nimport $ from '../dom';\r\nimport {API, BlockTune} from '../../../types';\r\n\r\nexport default class MoveUpTune implements BlockTune {\r\n\r\n /**\r\n * Property that contains CodeX Editor API methods\r\n * @see {api.md}\r\n */\r\n private readonly api: API;\r\n\r\n /**\r\n * Styles\r\n * @type {{wrapper: string}}\r\n */\r\n private CSS = {\r\n button: 'ce-settings__button',\r\n wrapper: 'ce-tune-move-up',\r\n animation: 'wobble',\r\n };\r\n\r\n /**\r\n * MoveUpTune constructor\r\n *\r\n * @param {Object} api\r\n */\r\n public constructor({api}) {\r\n this.api = api;\r\n }\r\n\r\n /**\r\n * Create \"MoveUp\" button and add click event listener\r\n * @returns [HTMLElement}\r\n */\r\n public render(): HTMLElement {\r\n const moveUpButton = $.make('div', [this.CSS.button, this.CSS.wrapper], {});\r\n moveUpButton.appendChild($.svg('arrow-up', 14, 14));\r\n this.api.listeners.on(\r\n moveUpButton,\r\n 'click',\r\n (event) => this.handleClick(event as MouseEvent, moveUpButton),\r\n false,\r\n );\r\n return moveUpButton;\r\n }\r\n\r\n /**\r\n * Move current block up\r\n * @param {MouseEvent} event\r\n * @param {HTMLElement} button\r\n */\r\n public handleClick(event: MouseEvent, button: HTMLElement): void {\r\n\r\n const currentBlockIndex = this.api.blocks.getCurrentBlockIndex();\r\n\r\n if (currentBlockIndex === 0) {\r\n button.classList.add(this.CSS.animation);\r\n\r\n window.setTimeout( () => {\r\n button.classList.remove(this.CSS.animation);\r\n }, 500);\r\n return;\r\n }\r\n\r\n const currentBlockElement = this.api.blocks.getBlockByIndex(currentBlockIndex);\r\n const previousBlockElement = this.api.blocks.getBlockByIndex(currentBlockIndex - 1);\r\n\r\n /**\r\n * Here is two cases:\r\n * - when previous block has negative offset and part of it is visible on window, then we scroll\r\n * by window's height and add offset which is mathematically difference between two blocks\r\n *\r\n * - when previous block is visible and has offset from the window,\r\n * than we scroll window to the difference between this offsets.\r\n */\r\n const currentBlockCoords = currentBlockElement.getBoundingClientRect(),\r\n previousBlockCoords = previousBlockElement.getBoundingClientRect();\r\n\r\n let scrollUpOffset;\r\n\r\n if (previousBlockCoords.top > 0) {\r\n scrollUpOffset = Math.abs(currentBlockCoords.top) - Math.abs(previousBlockCoords.top);\r\n } else {\r\n scrollUpOffset = window.innerHeight - Math.abs(currentBlockCoords.top) + Math.abs(previousBlockCoords.top);\r\n }\r\n\r\n window.scrollBy(0, -1 * scrollUpOffset);\r\n\r\n /** Change blocks positions */\r\n this.api.blocks.swap(currentBlockIndex, currentBlockIndex - 1);\r\n }\r\n}\r\n","import {\r\n API,\r\n BlockTool,\r\n BlockToolConstructable,\r\n BlockToolData,\r\n BlockTune,\r\n BlockTuneConstructable,\r\n SanitizerConfig,\r\n ToolConfig,\r\n} from '../../types';\r\n\r\nimport $ from './dom';\r\nimport _ from './utils';\r\n\r\n/**\r\n * @class Block\r\n * @classdesc This class describes editor`s block, including block`s HTMLElement, data and tool\r\n *\r\n * @property {BlockTool} tool — current block tool (Paragraph, for example)\r\n * @property {Object} CSS — block`s css classes\r\n *\r\n */\r\n\r\n/** Import default tunes */\r\nimport MoveUpTune from './block-tunes/block-tune-move-up';\r\nimport DeleteTune from './block-tunes/block-tune-delete';\r\nimport MoveDownTune from './block-tunes/block-tune-move-down';\r\n\r\n/**\r\n * @classdesc Abstract Block class that contains Block information, Tool name and Tool class instance\r\n *\r\n * @property tool - Tool instance\r\n * @property html - Returns HTML content of plugin\r\n * @property holder - Div element that wraps block content with Tool's content. Has `ce-block` CSS class\r\n * @property pluginsContent - HTML content that returns by Tool's render function\r\n */\r\nexport default class Block {\r\n\r\n /**\r\n * CSS classes for the Block\r\n * @return {{wrapper: string, content: string}}\r\n */\r\n static get CSS() {\r\n return {\r\n wrapper: 'ce-block',\r\n wrapperStretched: 'ce-block--stretched',\r\n content: 'ce-block__content',\r\n focused: 'ce-block--focused',\r\n selected: 'ce-block--selected',\r\n dropTarget: 'ce-block--drop-target',\r\n };\r\n }\r\n\r\n /**\r\n * Find and return all editable elements (contenteditables and native inputs) in the Tool HTML\r\n *\r\n * @returns {HTMLElement[]}\r\n */\r\n get inputs(): HTMLElement[] {\r\n const content = this.holder;\r\n const allowedInputTypes = ['text', 'password', 'email', 'number', 'search', 'tel', 'url'];\r\n\r\n const selector = '[contenteditable], textarea, input, '\r\n + allowedInputTypes.map((type) => `input[type=\"${type}\"]`).join(', ');\r\n\r\n const inputs = _.array(content.querySelectorAll(selector));\r\n\r\n /**\r\n * If inputs amount was changed we need to check if input index is bigger then inputs array length\r\n */\r\n if (this.inputIndex > inputs.length - 1) {\r\n this.inputIndex = inputs.length - 1;\r\n }\r\n\r\n return inputs;\r\n }\r\n\r\n /**\r\n * Return current Tool`s input\r\n *\r\n * @returns {HTMLElement}\r\n */\r\n get currentInput(): HTMLElement {\r\n return this.inputs[this.inputIndex];\r\n }\r\n\r\n /**\r\n * Set input index to the passed element\r\n *\r\n * @param {HTMLElement} element\r\n */\r\n set currentInput(element: HTMLElement) {\r\n const index = this.inputs.findIndex((input) => input === element || input.contains(element));\r\n\r\n if (index !== -1) {\r\n this.inputIndex = index;\r\n }\r\n }\r\n\r\n /**\r\n * Return first Tool`s input\r\n *\r\n * @returns {HTMLElement}\r\n */\r\n get firstInput(): HTMLElement {\r\n return this.inputs[0];\r\n }\r\n\r\n /**\r\n * Return first Tool`s input\r\n *\r\n * @returns {HTMLElement}\r\n */\r\n get lastInput(): HTMLElement {\r\n const inputs = this.inputs;\r\n\r\n return inputs[inputs.length - 1];\r\n }\r\n\r\n /**\r\n * Return next Tool`s input or undefined if it doesn't exist\r\n *\r\n * @returns {HTMLElement}\r\n */\r\n get nextInput(): HTMLElement {\r\n return this.inputs[this.inputIndex + 1];\r\n }\r\n\r\n /**\r\n * Return previous Tool`s input or undefined if it doesn't exist\r\n *\r\n * @returns {HTMLElement}\r\n */\r\n get previousInput(): HTMLElement {\r\n return this.inputs[this.inputIndex - 1];\r\n }\r\n\r\n /**\r\n * Returns Plugins content\r\n * @return {Node}\r\n */\r\n get pluginsContent(): Node {\r\n const pluginsContent = this.holder.querySelector(`.${Block.CSS.content}`);\r\n\r\n if (pluginsContent && pluginsContent.childNodes.length) {\r\n return pluginsContent.childNodes[0];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Get Block's JSON data\r\n * @return {Object}\r\n */\r\n get data(): object {\r\n return this.save();\r\n }\r\n\r\n /**\r\n * Returns tool's sanitizer config\r\n * @return {object}\r\n */\r\n get sanitize(): SanitizerConfig {\r\n return this.tool.sanitize;\r\n }\r\n\r\n /**\r\n * is block mergeable\r\n * We plugin have merge function then we call it mergable\r\n * @return {boolean}\r\n */\r\n get mergeable(): boolean {\r\n return typeof this.tool.merge === 'function';\r\n }\r\n\r\n /**\r\n * Check block for emptiness\r\n * @return {Boolean}\r\n */\r\n get isEmpty(): boolean {\r\n /**\r\n * Allow Tool to represent decorative contentless blocks: for example \"* * *\"-tool\r\n * That Tools are not empty\r\n */\r\n if (this.class.contentless) {\r\n return false;\r\n }\r\n\r\n const emptyText = $.isEmpty(this.pluginsContent),\r\n emptyMedia = !this.hasMedia;\r\n\r\n return emptyText && emptyMedia;\r\n }\r\n\r\n /**\r\n * Check if block has a media content such as images, iframes and other\r\n * @return {Boolean}\r\n */\r\n get hasMedia(): boolean {\r\n /**\r\n * This tags represents media-content\r\n * @type {string[]}\r\n */\r\n const mediaTags = [\r\n 'img',\r\n 'iframe',\r\n 'video',\r\n 'audio',\r\n 'source',\r\n 'input',\r\n 'textarea',\r\n 'twitterwidget',\r\n ];\r\n\r\n return !!this.holder.querySelector(mediaTags.join(','));\r\n }\r\n\r\n /**\r\n * Set focused state\r\n * We don't need to mark Block as focused when it is empty\r\n * @param {Boolean} state - 'true' to select, 'false' to remove selection\r\n */\r\n set focused(state: boolean) {\r\n if (state === true && !this.isEmpty) {\r\n this.holder.classList.add(Block.CSS.focused);\r\n } else {\r\n this.holder.classList.remove(Block.CSS.focused);\r\n }\r\n }\r\n\r\n /**\r\n * Set selected state\r\n * We don't need to mark Block as Selected when it is empty\r\n * @param {Boolean} state - 'true' to select, 'false' to remove selection\r\n */\r\n set selected(state: boolean) {\r\n if (state) {\r\n this.holder.classList.add(Block.CSS.selected);\r\n } else {\r\n this.holder.classList.remove(Block.CSS.selected);\r\n }\r\n }\r\n\r\n /**\r\n * Returns True if it is Selected\r\n * @return {boolean}\r\n */\r\n get selected(): boolean {\r\n return this.holder.classList.contains(Block.CSS.selected);\r\n }\r\n\r\n /**\r\n * Set stretched state\r\n * @param {Boolean} state - 'true' to enable, 'false' to disable stretched statte\r\n */\r\n set stretched(state: boolean) {\r\n this.holder.classList.toggle(Block.CSS.wrapperStretched, state);\r\n }\r\n\r\n /**\r\n * Block Tool`s name\r\n */\r\n public name: string;\r\n\r\n /**\r\n * Instance of the Tool Block represents\r\n */\r\n public tool: BlockTool;\r\n\r\n /**\r\n * Class blueprint of the ool Block represents\r\n */\r\n public class: BlockToolConstructable;\r\n\r\n /**\r\n * User Tool configuration\r\n */\r\n public settings: ToolConfig;\r\n\r\n /**\r\n * Wrapper for Block`s content\r\n */\r\n public holder: HTMLDivElement;\r\n\r\n /**\r\n * Tunes used by Tool\r\n */\r\n public tunes: BlockTune[];\r\n\r\n /**\r\n * Editor`s API\r\n */\r\n private readonly api: API;\r\n\r\n /**\r\n * Focused input index\r\n * @type {number}\r\n */\r\n private inputIndex = 0;\r\n\r\n /**\r\n * @constructor\r\n * @param {String} toolName - Tool name that passed on initialization\r\n * @param {Object} toolInstance — passed Tool`s instance that rendered the Block\r\n * @param {Object} toolClass — Tool's class\r\n * @param {Object} settings - default settings\r\n * @param {Object} apiMethods - Editor API\r\n */\r\n constructor(\r\n toolName: string,\r\n toolInstance: BlockTool,\r\n toolClass: BlockToolConstructable,\r\n settings: ToolConfig,\r\n apiMethods: API,\r\n ) {\r\n this.name = toolName;\r\n this.tool = toolInstance;\r\n this.class = toolClass;\r\n this.settings = settings;\r\n this.api = apiMethods;\r\n this.holder = this.compose();\r\n\r\n /**\r\n * @type {BlockTune[]}\r\n */\r\n this.tunes = this.makeTunes();\r\n }\r\n\r\n /**\r\n * Calls Tool's method\r\n *\r\n * Method checks tool property {MethodName}. Fires method with passes params If it is instance of Function\r\n *\r\n * @param {String} methodName\r\n * @param {Object} params\r\n */\r\n public call(methodName: string, params: object) {\r\n /**\r\n * call Tool's method with the instance context\r\n */\r\n if (this.tool[methodName] && this.tool[methodName] instanceof Function) {\r\n this.tool[methodName].call(this.tool, params);\r\n }\r\n }\r\n\r\n /**\r\n * Call plugins merge method\r\n * @param {Object} data\r\n */\r\n public async mergeWith(data: BlockToolData): Promise<void> {\r\n await this.tool.merge(data);\r\n }\r\n /**\r\n * Extracts data from Block\r\n * Groups Tool's save processing time\r\n * @return {Object}\r\n */\r\n public async save(): Promise<void|{tool: string, data: BlockToolData, time: number}> {\r\n const extractedBlock = await this.tool.save(this.pluginsContent as HTMLElement);\r\n\r\n /**\r\n * Measuring execution time\r\n */\r\n const measuringStart = window.performance.now();\r\n let measuringEnd;\r\n\r\n return Promise.resolve(extractedBlock)\r\n .then((finishedExtraction) => {\r\n /** measure promise execution */\r\n measuringEnd = window.performance.now();\r\n\r\n return {\r\n tool: this.name,\r\n data: finishedExtraction,\r\n time : measuringEnd - measuringStart,\r\n };\r\n })\r\n .catch((error) => {\r\n _.log(`Saving proccess for ${this.name} tool failed due to the ${error}`, 'log', 'red');\r\n });\r\n }\r\n\r\n /**\r\n * Uses Tool's validation method to check the correctness of output data\r\n * Tool's validation method is optional\r\n *\r\n * @description Method also can return data if it passed the validation\r\n *\r\n * @param {Object} data\r\n * @returns {Boolean|Object} valid\r\n */\r\n public validateData(data: BlockToolData): BlockToolData|false {\r\n let isValid = true;\r\n\r\n if (this.tool.validate instanceof Function) {\r\n isValid = this.tool.validate(data);\r\n }\r\n\r\n if (!isValid) {\r\n return false;\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n * Make an array with default settings\r\n * Each block has default tune instance that have states\r\n * @return {BlockTune[]}\r\n */\r\n public makeTunes(): BlockTune[] {\r\n const tunesList = [MoveUpTune, DeleteTune, MoveDownTune];\r\n\r\n // Pluck tunes list and return tune instances with passed Editor API and settings\r\n return tunesList.map( (tune: BlockTuneConstructable) => {\r\n return new tune({\r\n api: this.api,\r\n settings: this.settings,\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Enumerates initialized tunes and returns fragment that can be appended to the toolbars area\r\n * @return {DocumentFragment}\r\n */\r\n public renderTunes(): DocumentFragment {\r\n const tunesElement = document.createDocumentFragment();\r\n\r\n this.tunes.forEach( (tune) => {\r\n $.append(tunesElement, tune.render());\r\n });\r\n\r\n return tunesElement;\r\n }\r\n\r\n /**\r\n * Toggle drop target state\r\n * @param {boolean} state\r\n */\r\n public set dropTarget(state) {\r\n this.holder.classList.toggle(Block.CSS.dropTarget, state);\r\n }\r\n\r\n /**\r\n * Make default Block wrappers and put Tool`s content there\r\n * @returns {HTMLDivElement}\r\n */\r\n private compose(): HTMLDivElement {\r\n const wrapper = $.make('div', Block.CSS.wrapper) as HTMLDivElement,\r\n contentNode = $.make('div', Block.CSS.content),\r\n pluginsContent = this.tool.render();\r\n\r\n contentNode.appendChild(pluginsContent);\r\n wrapper.appendChild(contentNode);\r\n return wrapper;\r\n }\r\n}\r\n","import _ from './utils';\r\nimport $ from './dom';\r\nimport Block from './block';\r\n\r\n/**\r\n * @class Blocks\r\n * @classdesc Class to work with Block instances array\r\n *\r\n * @private\r\n *\r\n * @property {HTMLElement} workingArea — editor`s working node\r\n *\r\n */\r\nexport default class Blocks {\r\n\r\n /**\r\n * Get length of Block instances array\r\n *\r\n * @returns {Number}\r\n */\r\n public get length(): number {\r\n return this.blocks.length;\r\n }\r\n\r\n /**\r\n * Get Block instances array\r\n *\r\n * @returns {Block[]}\r\n */\r\n public get array(): Block[] {\r\n return this.blocks;\r\n }\r\n\r\n /**\r\n * Get blocks html elements array\r\n *\r\n * @returns {HTMLElement[]}\r\n */\r\n public get nodes(): HTMLElement[] {\r\n return _.array(this.workingArea.children);\r\n }\r\n\r\n /**\r\n * Proxy trap to implement array-like setter\r\n *\r\n * @example\r\n * blocks[0] = new Block(...)\r\n *\r\n * @param {Blocks} instance — Blocks instance\r\n * @param {Number|String} index — block index\r\n * @param {Block} block — Block to set\r\n * @returns {Boolean}\r\n */\r\n public static set(instance: Blocks, index: number, block: Block) {\r\n if (isNaN(Number(index))) {\r\n return false;\r\n }\r\n\r\n instance.insert(index, block);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Proxy trap to implement array-like getter\r\n *\r\n * @param {Blocks} instance — Blocks instance\r\n * @param {Number|String} index — Block index\r\n * @returns {Block|*}\r\n */\r\n public static get(instance: Blocks, index: number) {\r\n if (isNaN(Number(index))) {\r\n return instance[index];\r\n }\r\n\r\n return instance.get(index);\r\n }\r\n\r\n /**\r\n * Array of Block instances in order of addition\r\n */\r\n public blocks: Block[];\r\n\r\n /**\r\n * Editor`s area where to add Block`s HTML\r\n */\r\n public workingArea: HTMLElement;\r\n\r\n /**\r\n * @constructor\r\n *\r\n * @param {HTMLElement} workingArea — editor`s working node\r\n */\r\n constructor(workingArea: HTMLElement) {\r\n this.blocks = [];\r\n this.workingArea = workingArea;\r\n }\r\n\r\n /**\r\n * Push new Block to the blocks array and append it to working area\r\n *\r\n * @param {Block} block\r\n */\r\n public push(block: Block): void {\r\n this.blocks.push(block);\r\n this.workingArea.appendChild(block.holder);\r\n }\r\n\r\n /**\r\n * Swaps blocks with indexes first and second\r\n * @param {Number} first - first block index\r\n * @param {Number} second - second block index\r\n */\r\n public swap(first: number, second: number): void {\r\n const secondBlock = this.blocks[second];\r\n\r\n /**\r\n * Change in DOM\r\n */\r\n $.swap(this.blocks[first].holder, secondBlock.holder);\r\n\r\n /**\r\n * Change in array\r\n */\r\n this.blocks[second] = this.blocks[first];\r\n this.blocks[first] = secondBlock;\r\n }\r\n\r\n /**\r\n * Insert new Block at passed index\r\n *\r\n * @param {Number} index — index to insert Block\r\n * @param {Block} block — Block to insert\r\n * @param {Boolean} replace — it true, replace block on given index\r\n */\r\n public insert(index: number, block: Block, replace: boolean = false): void {\r\n if (!this.length) {\r\n this.push(block);\r\n return;\r\n }\r\n\r\n if (index > this.length) {\r\n index = this.length;\r\n }\r\n\r\n if (replace) {\r\n this.blocks[index].holder.remove();\r\n }\r\n\r\n const deleteCount = replace ? 1 : 0;\r\n\r\n this.blocks.splice(index, deleteCount, block);\r\n\r\n if (index > 0) {\r\n const previousBlock = this.blocks[index - 1];\r\n\r\n previousBlock.holder.insertAdjacentElement('afterend', block.holder);\r\n } else {\r\n const nextBlock = this.blocks[index + 1];\r\n\r\n if (nextBlock) {\r\n nextBlock.holder.insertAdjacentElement('beforebegin', block.holder);\r\n } else {\r\n this.workingArea.appendChild(block.holder);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Remove block\r\n * @param {Number|null} index\r\n */\r\n public remove(index: number): void {\r\n if (isNaN(index)) {\r\n index = this.length - 1;\r\n }\r\n\r\n this.blocks[index].holder.remove();\r\n this.blocks.splice(index, 1);\r\n }\r\n\r\n /**\r\n * Remove all blocks\r\n */\r\n public removeAll(): void {\r\n this.workingArea.innerHTML = '';\r\n this.blocks.length = 0;\r\n }\r\n\r\n /**\r\n * Insert Block after passed target\r\n *\r\n * @todo decide if this method is necessary\r\n *\r\n * @param {Block} targetBlock — target after wich Block should be inserted\r\n * @param {Block} newBlock — Block to insert\r\n */\r\n public insertAfter(targetBlock: Block, newBlock: Block): void {\r\n const index = this.blocks.indexOf(targetBlock);\r\n\r\n this.insert(index + 1, newBlock);\r\n }\r\n\r\n /**\r\n * Get Block by index\r\n *\r\n * @param {Number} index — Block index\r\n * @returns {Block}\r\n */\r\n public get(index: number): Block {\r\n return this.blocks[index];\r\n }\r\n\r\n /**\r\n * Return index of passed Block\r\n *\r\n * @param {Block} block\r\n * @returns {Number}\r\n */\r\n public indexOf(block: Block): number {\r\n return this.blocks.indexOf(block);\r\n }\r\n}\r\n","import $ from './dom';\nimport _ from './utils';\nimport {EditorConfig, OutputData, SanitizerConfig, ToolSettings} from '../../types';\nimport {EditorModules} from '../types-internal/editor-modules';\n\n/**\n * @typedef {Core} Core - editor core class\n */\n\n/**\n * Require Editor modules places in components/modules dir\n */\nconst contextRequire = require.context('./modules', true);\n\nconst modules = [];\n\ncontextRequire.keys().forEach((filename) => {\n /**\n * Include files if:\n * - extension is .js or .ts\n * - does not starts with _\n */\n if (filename.match(/^\\.\\/[^_][\\w/]*\\.([tj])s$/)) {\n modules.push(contextRequire(filename));\n }\n});\n\n/**\n * @class Core\n *\n * @classdesc CodeX Editor core class\n *\n * @property this.config - all settings\n * @property this.moduleInstances - constructed editor components\n *\n * @type {Core}\n */\nexport default class Core {\n\n /**\n * Editor configuration passed by user to the constructor\n */\n public config: EditorConfig;\n\n /**\n * Object with core modules instances\n */\n public moduleInstances: EditorModules = {} as EditorModules;\n\n /**\n * Promise that resolves when all core modules are prepared and UI is rendered on the page\n */\n public isReady: Promise<void>;\n\n /**\n * @param {EditorConfig} config - user configuration\n *\n */\n constructor(config?: EditorConfig|string) {\n /**\n * Ready promise. Resolved if CodeX Editor is ready to work, rejected otherwise\n */\n let onReady, onFail;\n\n this.isReady = new Promise((resolve, reject) => {\n onReady = resolve;\n onFail = reject;\n });\n\n Promise.resolve()\n .then(async () => {\n this.configuration = config;\n\n await this.validate();\n await this.init();\n await this.start();\n\n _.log('I\\'m ready! (ノ◕ヮ◕)ノ*:・゚✧');\n\n setTimeout(() => {\n /**\n * Resolve this.isReady promise\n */\n onReady();\n }, 500);\n })\n .catch((error) => {\n _.log(`CodeX Editor does not ready because of ${error}`, 'error');\n\n /**\n * Reject this.isReady promise\n */\n onFail(error);\n });\n }\n\n /**\n * Setting for configuration\n * @param {EditorConfig|string|undefined} config\n */\n set configuration(config: EditorConfig|string) {\n /**\n * Process zero-configuration or with only holderId\n */\n if (typeof config === 'string' || typeof config === 'undefined') {\n this.config = {\n holderId: config || 'codex-editor',\n };\n } else {\n this.config = config;\n }\n\n /**\n * If initial Block's Tool was not passed, use the Paragraph Tool\n */\n this.config.initialBlock = this.config.initialBlock || 'paragraph';\n\n /**\n * Initial block type\n * Uses in case when there is no blocks passed\n * @type {{type: (*), data: {text: null}}}\n */\n const initialBlockData = {\n type : this.config.initialBlock,\n data : {},\n };\n\n this.config.placeholder = this.config.placeholder || 'write your story...';\n this.config.sanitizer = this.config.sanitizer || {\n p: true,\n b: true,\n a: true,\n } as SanitizerConfig;\n\n this.config.hideToolbar = this.config.hideToolbar ? this.config.hideToolbar : false;\n this.config.tools = this.config.tools || {};\n this.config.data = this.config.data || {} as OutputData;\n this.config.onReady = this.config.onReady || (() => {});\n this.config.onChange = this.config.onChange || (() => {});\n\n /**\n * Initialize Blocks to pass data to the Renderer\n */\n if (_.isEmpty(this.config.data)) {\n this.config.data = {} as OutputData;\n this.config.data.blocks = [ initialBlockData ];\n } else {\n if (!this.config.data.blocks || this.config.data.blocks.length === 0) {\n this.config.data.blocks = [ initialBlockData ];\n }\n }\n }\n\n /**\n * Returns private property\n * @returns {EditorConfig}\n */\n get configuration(): EditorConfig|string {\n return this.config;\n }\n\n /**\n * Checks for required fields in Editor's config\n * @returns {Promise<void>}\n */\n public async validate(): Promise<void> {\n /**\n * Check if holderId is not empty\n */\n if (!this.config.holderId) {\n throw Error('«holderId» param must being not empty');\n }\n\n /**\n * Check for a holder element's existence\n */\n if (!$.get(this.config.holderId)) {\n throw Error(`element with ID «${this.config.holderId}» is missing. Pass correct holder's ID.`);\n }\n\n /**\n * Check Tools for a class containing\n */\n for (const toolName in this.config.tools) {\n if (this.config.tools.hasOwnProperty(toolName)) {\n const tool = this.config.tools[toolName];\n\n if (!_.isFunction(tool) && !_.isFunction((tool as ToolSettings).class)) {\n throw Error(\n `Tool «${toolName}» must be a constructor function or an object with function in the «class» property`,\n );\n }\n }\n }\n }\n\n /**\n * Initializes modules:\n * - make and save instances\n * - configure\n */\n public init() {\n /**\n * Make modules instances and save it to the @property this.moduleInstances\n */\n this.constructModules();\n\n /**\n * Modules configuration\n */\n this.configureModules();\n }\n\n /**\n * Start Editor!\n *\n * Get list of modules that needs to be prepared and return a sequence (Promise)\n * @return {Promise}\n */\n public async start() {\n const modulesToPrepare = [\n 'Tools',\n 'UI',\n 'BlockManager',\n 'Paste',\n 'DragNDrop',\n 'ModificationsObserver',\n 'BlockSelection',\n ];\n\n await modulesToPrepare.reduce(\n (promise, module) => promise.then(async () => {\n _.log(`Preparing ${module} module`, 'time');\n\n try {\n await this.moduleInstances[module].prepare();\n } catch (e) {\n _.log(`Module ${module} was skipped because of %o`, 'warn', e);\n }\n _.log(`Preparing ${module} module`, 'timeEnd');\n }),\n Promise.resolve(),\n );\n\n return this.moduleInstances.Renderer.render(this.config.data.blocks);\n }\n\n /**\n * Make modules instances and save it to the @property this.moduleInstances\n */\n private constructModules(): void {\n modules.forEach( (Module) => {\n try {\n /**\n * We use class name provided by displayName property\n *\n * On build, Babel will transform all Classes to the Functions so, name will always be 'Function'\n * To prevent this, we use 'babel-plugin-class-display-name' plugin\n * @see https://www.npmjs.com/package/babel-plugin-class-display-name\n */\n this.moduleInstances[Module.displayName] = new Module({\n config : this.configuration,\n });\n } catch ( e ) {\n console.log('Module %o skipped because %o', Module, e);\n }\n });\n }\n\n /**\n * Modules instances configuration:\n * - pass other modules to the 'state' property\n * - ...\n */\n private configureModules(): void {\n for (const name in this.moduleInstances) {\n if (this.moduleInstances.hasOwnProperty(name)) {\n /**\n * Module does not need self-instance\n */\n this.moduleInstances[name].state = this.getModulesDiff(name);\n }\n }\n }\n\n /**\n * Return modules without passed name\n * @param {string} name - module for witch modules difference should be calculated\n */\n private getModulesDiff(name: string): EditorModules {\n const diff = {} as EditorModules;\n\n for (const moduleName in this.moduleInstances) {\n /**\n * Skip module with passed name\n */\n if (moduleName === name) {\n continue;\n }\n diff[moduleName] = this.moduleInstances[moduleName];\n }\n\n return diff;\n }\n}\n","/**\r\n * DOM manipulations helper\r\n */\r\nexport default class Dom {\r\n /**\r\n * Check if passed tag has no closed tag\r\n * @param {HTMLElement} tag\r\n * @return {Boolean}\r\n */\r\n public static isSingleTag(tag: HTMLElement): boolean {\r\n return tag.tagName && [\r\n 'AREA',\r\n 'BASE',\r\n 'BR',\r\n 'COL',\r\n 'COMMAND',\r\n 'EMBED',\r\n 'HR',\r\n 'IMG',\r\n 'INPUT',\r\n 'KEYGEN',\r\n 'LINK',\r\n 'META',\r\n 'PARAM',\r\n 'SOURCE',\r\n 'TRACK',\r\n 'WBR',\r\n ].includes(tag.tagName);\r\n }\r\n\r\n /**\r\n * Helper for making Elements with classname and attributes\r\n *\r\n * @param {string} tagName - new Element tag name\r\n * @param {array|string} classNames - list or name of CSS classname(s)\r\n * @param {Object} attributes - any attributes\r\n * @return {HTMLElement}\r\n */\r\n public static make(tagName: string, classNames: string|string[] = null, attributes: object = {}): HTMLElement {\r\n const el = document.createElement(tagName);\r\n\r\n if ( Array.isArray(classNames) ) {\r\n el.classList.add(...classNames);\r\n } else if ( classNames ) {\r\n el.classList.add(classNames);\r\n }\r\n\r\n for (const attrName in attributes) {\r\n if (attributes.hasOwnProperty(attrName)) {\r\n el[attrName] = attributes[attrName];\r\n }\r\n }\r\n\r\n return el;\r\n }\r\n\r\n /**\r\n * Creates Text Node with the passed content\r\n * @param {String} content - text content\r\n * @return {Text}\r\n */\r\n public static text(content: string): Text {\r\n return document.createTextNode(content);\r\n }\r\n\r\n /**\r\n * Creates SVG icon linked to the sprite\r\n * @param {string} name - name (id) of icon from sprite\r\n * @param {number} width\r\n * @param {number} height\r\n * @return {SVGElement}\r\n */\r\n public static svg(name: string, width: number = 14, height: number = 14): SVGElement {\r\n const icon = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n\r\n icon.classList.add('icon', 'icon--' + name);\r\n icon.setAttribute('width', width + 'px');\r\n icon.setAttribute('height', height + 'px');\r\n icon.innerHTML = `<use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#${name}\"></use>`;\r\n\r\n return icon;\r\n }\r\n\r\n /**\r\n * Append one or several elements to the parent\r\n *\r\n * @param {Element|DocumentFragment} parent - where to append\r\n * @param {Element|Element[]} elements - element or elements list\r\n */\r\n public static append(parent: Element|DocumentFragment, elements: Element|Element[]|DocumentFragment): void {\r\n if ( Array.isArray(elements) ) {\r\n elements.forEach( (el) => parent.appendChild(el) );\r\n } else {\r\n parent.appendChild(elements);\r\n }\r\n }\r\n\r\n /**\r\n * Append element or a couple to the beginning of the parent elements\r\n *\r\n * @param {Element} parent - where to append\r\n * @param {Element|Element[]} elements - element or elements list\r\n */\r\n public static prepend(parent: Element, elements: Element|Element[]): void {\r\n if ( Array.isArray(elements) ) {\r\n elements = elements.reverse();\r\n elements.forEach( (el) => parent.prepend(el) );\r\n } else {\r\n parent.prepend(elements);\r\n }\r\n }\r\n\r\n /**\r\n * Swap two elements in parent\r\n * @param {HTMLElement} el1 - from\r\n * @param {HTMLElement} el2 - to\r\n */\r\n public static swap(el1: HTMLElement, el2: HTMLElement): void {\r\n // create marker element and insert it where el1 is\r\n const temp = document.createElement('div'),\r\n parent = el1.parentNode;\r\n\r\n parent.insertBefore(temp, el1);\r\n\r\n // move el1 to right before el2\r\n parent.insertBefore(el1, el2);\r\n\r\n // move el2 to right before where el1 used to be\r\n parent.insertBefore(el2, temp);\r\n\r\n // remove temporary marker node\r\n parent.removeChild(temp);\r\n }\r\n\r\n /**\r\n * Selector Decorator\r\n *\r\n * Returns first match\r\n *\r\n * @param {Element} el - element we searching inside. Default - DOM Document\r\n * @param {String} selector - searching string\r\n *\r\n * @returns {Element}\r\n */\r\n public static find(el: Element|Document = document, selector: string): Element {\r\n return el.querySelector(selector);\r\n }\r\n\r\n /**\r\n * Get Element by Id\r\n *\r\n * @param {string} id\r\n * @returns {HTMLElement | null}\r\n */\r\n public static get(id: string): HTMLElement {\r\n return document.getElementById(id);\r\n }\r\n\r\n /**\r\n * Selector Decorator.\r\n *\r\n * Returns all matches\r\n *\r\n * @param {Element} el - element we searching inside. Default - DOM Document\r\n * @param {String} selector - searching string\r\n * @returns {NodeList}\r\n */\r\n public static findAll(el: Element|Document = document, selector: string): NodeList {\r\n return el.querySelectorAll(selector);\r\n }\r\n\r\n /**\r\n * Search for deepest node which is Leaf.\r\n * Leaf is the vertex that doesn't have any child nodes\r\n *\r\n * @description Method recursively goes throw the all Node until it finds the Leaf\r\n *\r\n * @param {Node} node - root Node. From this vertex we start Deep-first search\r\n * {@link https://en.wikipedia.org/wiki/Depth-first_search}\r\n * @param {Boolean} atLast - find last text node\r\n * @return {Node} - it can be text Node or Element Node, so that caret will able to work with it\r\n */\r\n public static getDeepestNode(node: Node, atLast: boolean = false): Node {\r\n /**\r\n * Current function have two directions:\r\n * - starts from first child and every time gets first or nextSibling in special cases\r\n * - starts from last child and gets last or previousSibling\r\n * @type {string}\r\n */\r\n const child = atLast ? 'lastChild' : 'firstChild',\r\n sibling = atLast ? 'previousSibling' : 'nextSibling';\r\n\r\n if (node && node.nodeType === Node.ELEMENT_NODE && node[child]) {\r\n let nodeChild = node[child];\r\n\r\n /**\r\n * special case when child is single tag that can't contain any content\r\n */\r\n if (Dom.isSingleTag(nodeChild as HTMLElement) && !Dom.isNativeInput(nodeChild)) {\r\n /**\r\n * 1) We need to check the next sibling. If it is Node Element then continue searching for deepest\r\n * from sibling\r\n *\r\n * 2) If single tag's next sibling is null, then go back to parent and check his sibling\r\n * In case of Node Element continue searching\r\n *\r\n * 3) If none of conditions above happened return parent Node Element\r\n */\r\n if (nodeChild[sibling]) {\r\n nodeChild = nodeChild[sibling];\r\n } else if (nodeChild.parentNode[sibling]) {\r\n nodeChild = nodeChild.parentNode[sibling];\r\n } else {\r\n return nodeChild.parentNode;\r\n }\r\n }\r\n\r\n return this.getDeepestNode(nodeChild, atLast);\r\n }\r\n\r\n return node;\r\n }\r\n\r\n /**\r\n * Check if object is DOM node\r\n *\r\n * @param {Object} node\r\n * @returns {boolean}\r\n */\r\n public static isElement(node: any): boolean {\r\n return node && typeof node === 'object' && node.nodeType && node.nodeType === Node.ELEMENT_NODE;\r\n }\r\n\r\n /**\r\n * Check if object is DocumentFragmemt node\r\n *\r\n * @param {Object} node\r\n * @returns {boolean}\r\n */\r\n public static isFragment(node: any): boolean {\r\n return node && typeof node === 'object' && node.nodeType && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\r\n }\r\n\r\n /**\r\n * Checks target if it is native input\r\n * @param {Element|String|Node} target - HTML element or string\r\n * @return {Boolean}\r\n */\r\n public static isNativeInput(target: any): boolean {\r\n const nativeInputs = [\r\n 'INPUT',\r\n 'TEXTAREA',\r\n ];\r\n\r\n return target && target.tagName ? nativeInputs.includes(target.tagName) : false;\r\n }\r\n\r\n /**\r\n * Checks node if it is empty\r\n *\r\n * @description Method checks simple Node without any childs for emptiness\r\n * If you have Node with 2 or more children id depth, you better use {@link Dom#isEmpty} method\r\n *\r\n * @param {Node} node\r\n * @return {Boolean} true if it is empty\r\n */\r\n public static isNodeEmpty(node: Node): boolean {\r\n let nodeText;\r\n\r\n if ( this.isElement(node) && this.isNativeInput(node) ) {\r\n nodeText = (node as HTMLInputElement).value;\r\n } else {\r\n nodeText = node.textContent.replace('\\u200B', '');\r\n }\r\n\r\n return nodeText.trim().length === 0;\r\n }\r\n\r\n /**\r\n * checks node if it is doesn't have any child nodes\r\n * @param {Node} node\r\n * @return {boolean}\r\n */\r\n public static isLeaf(node: Node): boolean {\r\n if (!node) {\r\n return false;\r\n }\r\n\r\n return node.childNodes.length === 0;\r\n }\r\n\r\n /**\r\n * breadth-first search (BFS)\r\n * {@link https://en.wikipedia.org/wiki/Breadth-first_search}\r\n *\r\n * @description Pushes to stack all DOM leafs and checks for emptiness\r\n *\r\n * @param {Node} node\r\n * @return {boolean}\r\n */\r\n public static isEmpty(node: Node): boolean {\r\n const treeWalker = [],\r\n leafs = [];\r\n\r\n if (!node) {\r\n return true;\r\n }\r\n\r\n if (!node.childNodes.length) {\r\n return this.isNodeEmpty(node);\r\n }\r\n\r\n treeWalker.push(node.firstChild);\r\n\r\n while ( treeWalker.length > 0 ) {\r\n node = treeWalker.shift();\r\n\r\n if (!node) { continue; }\r\n\r\n if ( this.isLeaf(node) ) {\r\n leafs.push(node);\r\n } else {\r\n treeWalker.push(node.firstChild);\r\n }\r\n\r\n while ( node && node.nextSibling ) {\r\n node = node.nextSibling;\r\n\r\n if (!node) { continue; }\r\n\r\n treeWalker.push(node);\r\n }\r\n\r\n /**\r\n * If one of childs is not empty, checked Node is not empty too\r\n */\r\n if (node && !this.isNodeEmpty(node)) {\r\n return false;\r\n }\r\n }\r\n\r\n return leafs.every( (leaf) => this.isNodeEmpty(leaf) );\r\n }\r\n\r\n /**\r\n * Check if string contains html elements\r\n *\r\n * @returns {boolean}\r\n * @param {String} str\r\n */\r\n public static isHTMLString(str: string): boolean {\r\n const wrapper = Dom.make('div');\r\n\r\n wrapper.innerHTML = str;\r\n\r\n return wrapper.childElementCount > 0;\r\n }\r\n\r\n /**\r\n * Return length of node`s text content\r\n *\r\n * @param {Node} node\r\n * @returns {number}\r\n */\r\n public static getContentLength(node: Node): number {\r\n if (Dom.isNativeInput(node)) {\r\n return (node as HTMLInputElement).value.length;\r\n }\r\n\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n return (node as Text).length;\r\n }\r\n\r\n return node.textContent.length;\r\n }\r\n\r\n /**\r\n * Return array of names of block html elements\r\n *\r\n * @returns {string[]}\r\n */\r\n static get blockElements(): string[] {\r\n return [\r\n 'address',\r\n 'article',\r\n 'aside',\r\n 'blockquote',\r\n 'canvas',\r\n 'div',\r\n 'dl',\r\n 'dt',\r\n 'fieldset',\r\n 'figcaption',\r\n 'figure',\r\n 'footer',\r\n 'form',\r\n 'h1',\r\n 'h2',\r\n 'h3',\r\n 'h4',\r\n 'h5',\r\n 'h6',\r\n 'header',\r\n 'hgroup',\r\n 'hr',\r\n 'li',\r\n 'main',\r\n 'nav',\r\n 'noscript',\r\n 'ol',\r\n 'output',\r\n 'p',\r\n 'pre',\r\n 'ruby',\r\n 'section',\r\n 'table',\r\n 'tr',\r\n 'tfoot',\r\n 'ul',\r\n 'video',\r\n ];\r\n }\r\n}\r\n","import $ from '../dom';\r\nimport {API, InlineTool, SanitizerConfig} from '../../../types';\r\n\r\n/**\r\n * Bold Tool\r\n *\r\n * Inline Toolbar Tool\r\n *\r\n * Makes selected text bolder\r\n */\r\nexport default class BoldInlineTool implements InlineTool {\r\n\r\n /**\r\n * Specifies Tool as Inline Toolbar Tool\r\n *\r\n * @return {boolean}\r\n */\r\n public static isInline = true;\r\n\r\n /**\r\n * Sanitizer Rule\r\n * Leave <b> tags\r\n * @return {object}\r\n */\r\n static get sanitize(): SanitizerConfig {\r\n return {\r\n b: {},\r\n } as SanitizerConfig;\r\n }\r\n\r\n /**\r\n * Native Document's command that uses for Bold\r\n */\r\n private readonly commandName: string = 'bold';\r\n\r\n /**\r\n * Styles\r\n */\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--bold',\r\n };\r\n\r\n /**\r\n * Elements\r\n */\r\n private nodes: {button: HTMLButtonElement} = {\r\n button: undefined,\r\n };\r\n\r\n /**\r\n * @param {{api: API}} - CodeX Editor API\r\n */\r\n constructor({api}: {api: API}) {\r\n }\r\n\r\n /**\r\n * Create button for Inline Toolbar\r\n */\r\n public render(): HTMLElement {\r\n this.nodes.button = document.createElement('button') as HTMLButtonElement;\r\n this.nodes.button.type = 'button';\r\n this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n this.nodes.button.appendChild($.svg('bold', 13, 15));\r\n return this.nodes.button;\r\n }\r\n\r\n /**\r\n * Wrap range with <b> tag\r\n * @param {Range} range\r\n */\r\n public surround(range: Range): void {\r\n document.execCommand(this.commandName);\r\n }\r\n\r\n /**\r\n * Check selection and set activated state to button if there are <b> tag\r\n * @param {Selection} selection\r\n */\r\n public checkState(selection: Selection): boolean {\r\n const isActive = document.queryCommandState(this.commandName);\r\n\r\n this.nodes.button.classList.toggle(this.CSS.buttonActive, isActive);\r\n return isActive;\r\n }\r\n\r\n /**\r\n * Set a shortcut\r\n */\r\n public get shortcut(): string {\r\n return 'CMD+B';\r\n }\r\n}\r\n","import $ from '../dom';\r\nimport {InlineTool, SanitizerConfig} from '../../../types';\r\n\r\n/**\r\n * Italic Tool\r\n *\r\n * Inline Toolbar Tool\r\n *\r\n * Style selected text with italic\r\n */\r\nexport default class ItalicInlineTool implements InlineTool {\r\n\r\n /**\r\n * Specifies Tool as Inline Toolbar Tool\r\n *\r\n * @return {boolean}\r\n */\r\n public static isInline = true;\r\n\r\n /**\r\n * Sanitizer Rule\r\n * Leave <i> tags\r\n * @return {object}\r\n */\r\n static get sanitize(): SanitizerConfig {\r\n return {\r\n i: {},\r\n } as SanitizerConfig;\r\n }\r\n\r\n /**\r\n * Native Document's command that uses for Italic\r\n */\r\n private readonly commandName: string = 'italic';\r\n\r\n /**\r\n * Styles\r\n */\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--italic',\r\n };\r\n\r\n /**\r\n * Elements\r\n */\r\n private nodes: {button: HTMLButtonElement} = {\r\n button: null,\r\n };\r\n\r\n /**\r\n * @param {{api: API}} - CodeX Editor API\r\n */\r\n constructor({api}) {\r\n }\r\n\r\n /**\r\n * Create button for Inline Toolbar\r\n */\r\n public render(): HTMLElement {\r\n this.nodes.button = document.createElement('button') as HTMLButtonElement;\r\n this.nodes.button.type = 'button';\r\n this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n this.nodes.button.appendChild($.svg('italic', 6, 15));\r\n return this.nodes.button;\r\n }\r\n\r\n /**\r\n * Wrap range with <i> tag\r\n * @param {Range} range\r\n */\r\n public surround(range: Range): void {\r\n document.execCommand(this.commandName);\r\n }\r\n\r\n /**\r\n * Check selection and set activated state to button if there are <i> tag\r\n * @param {Selection} selection\r\n */\r\n public checkState(selection: Selection): boolean {\r\n const isActive = document.queryCommandState(this.commandName);\r\n\r\n this.nodes.button.classList.toggle(this.CSS.buttonActive, isActive);\r\n return isActive;\r\n }\r\n\r\n /**\r\n * Set a shortcut\r\n */\r\n public get shortcut(): string {\r\n return 'CMD+I';\r\n }\r\n}\r\n","import SelectionUtils from '../selection';\r\n\r\nimport $ from '../dom';\r\nimport _ from '../utils';\r\nimport {API, InlineTool, SanitizerConfig} from '../../../types';\r\nimport {Toolbar} from '../../../types/api';\r\n/**\r\n * Link Tool\r\n *\r\n * Inline Toolbar Tool\r\n *\r\n * Wrap selected text with <a> tag\r\n */\r\nexport default class LinkInlineTool implements InlineTool {\r\n\r\n /**\r\n * Specifies Tool as Inline Toolbar Tool\r\n *\r\n * @return {boolean}\r\n */\r\n public static isInline = true;\r\n\r\n /**\r\n * Sanitizer Rule\r\n * Leave <a> tags\r\n * @return {object}\r\n */\r\n static get sanitize(): SanitizerConfig {\r\n return {\r\n a: {\r\n href: true,\r\n target: '_blank',\r\n rel: 'nofollow',\r\n },\r\n } as SanitizerConfig;\r\n }\r\n\r\n /**\r\n * Native Document's commands for link/unlink\r\n */\r\n private readonly commandLink: string = 'createLink';\r\n private readonly commandUnlink: string = 'unlink';\r\n\r\n /**\r\n * Enter key code\r\n */\r\n private readonly ENTER_KEY: number = 13;\r\n\r\n /**\r\n * Styles\r\n */\r\n private readonly CSS = {\r\n button: 'ce-inline-tool',\r\n buttonActive: 'ce-inline-tool--active',\r\n buttonModifier: 'ce-inline-tool--link',\r\n buttonUnlink: 'ce-inline-tool--unlink',\r\n input: 'ce-inline-tool-input',\r\n inputShowed: 'ce-inline-tool-input--showed',\r\n };\r\n\r\n /**\r\n * Elements\r\n */\r\n private nodes: {\r\n button: HTMLButtonElement;\r\n input: HTMLInputElement;\r\n } = {\r\n button: null,\r\n input: null,\r\n };\r\n\r\n /**\r\n * SelectionUtils instance\r\n */\r\n private selection: SelectionUtils;\r\n\r\n /**\r\n * Input opening state\r\n */\r\n private inputOpened: boolean = false;\r\n\r\n /**\r\n * Available Inline Toolbar methods (open/close)\r\n */\r\n private inlineToolbar: Toolbar;\r\n\r\n /**\r\n * @param {{api: API}} - CodeX Editor API\r\n */\r\n constructor({api}) {\r\n this.inlineToolbar = api.toolbar;\r\n this.selection = new SelectionUtils();\r\n }\r\n\r\n /**\r\n * Create button for Inline Toolbar\r\n */\r\n public render(): HTMLElement {\r\n this.nodes.button = document.createElement('button') as HTMLButtonElement;\r\n this.nodes.button.type = 'button';\r\n this.nodes.button.classList.add(this.CSS.button, this.CSS.buttonModifier);\r\n this.nodes.button.appendChild($.svg('link', 15, 14));\r\n this.nodes.button.appendChild($.svg('unlink', 16, 18));\r\n return this.nodes.button;\r\n }\r\n\r\n /**\r\n * Input for the link\r\n */\r\n public renderActions(): HTMLElement {\r\n this.nodes.input = document.createElement('input') as HTMLInputElement;\r\n this.nodes.input.placeholder = 'Add a link';\r\n this.nodes.input.classList.add(this.CSS.input);\r\n this.nodes.input.addEventListener('keydown', (event: KeyboardEvent) => {\r\n if (event.keyCode === this.ENTER_KEY ) {\r\n this.enterPressed(event);\r\n }\r\n });\r\n return this.nodes.input;\r\n }\r\n\r\n /**\r\n * Handle clicks on the Inline Toolbar icon\r\n * @param {Range} range\r\n */\r\n public surround(range: Range): void {\r\n /**\r\n * Range will be null when user makes second click on the 'link icon' to close opened input\r\n */\r\n if (range) {\r\n /**\r\n * Save selection before change focus to the input\r\n */\r\n this.selection.save();\r\n const parentAnchor = this.selection.findParentTag('A');\r\n\r\n /**\r\n * Unlink icon pressed\r\n */\r\n if (parentAnchor) {\r\n this.selection.expandToTag(parentAnchor);\r\n this.unlink();\r\n this.closeActions();\r\n this.checkState();\r\n this.inlineToolbar.close();\r\n return;\r\n }\r\n }\r\n\r\n this.toggleActions();\r\n }\r\n\r\n /**\r\n * Check selection and set activated state to button if there are <a> tag\r\n * @param {Selection} selection\r\n */\r\n public checkState(selection?: Selection): boolean {\r\n const anchorTag = this.selection.findParentTag('A');\r\n\r\n if (anchorTag) {\r\n this.nodes.button.classList.add(this.CSS.buttonUnlink);\r\n this.nodes.button.classList.add(this.CSS.buttonActive);\r\n this.openActions();\r\n\r\n /**\r\n * Fill input value with link href\r\n */\r\n const hrefAttr = anchorTag.getAttribute('href');\r\n this.nodes.input.value = hrefAttr !== 'null' ? hrefAttr : '';\r\n\r\n this.selection.save();\r\n } else {\r\n this.nodes.button.classList.remove(this.CSS.buttonUnlink);\r\n this.nodes.button.classList.remove(this.CSS.buttonActive);\r\n }\r\n\r\n return !!anchorTag;\r\n }\r\n\r\n /**\r\n * Function called with Inline Toolbar closing\r\n */\r\n public clear(): void {\r\n this.closeActions();\r\n }\r\n\r\n /**\r\n * Set a shortcut\r\n */\r\n public get shortcut(): string {\r\n return 'CMD+K';\r\n }\r\n\r\n private toggleActions(): void {\r\n if (!this.inputOpened) {\r\n this.openActions(true);\r\n } else {\r\n this.closeActions(false);\r\n }\r\n }\r\n\r\n /**\r\n * @param {boolean} needFocus - on link creation we need to focus input. On editing - nope.\r\n */\r\n private openActions(needFocus: boolean = false): void {\r\n this.nodes.input.classList.add(this.CSS.inputShowed);\r\n if (needFocus) {\r\n this.nodes.input.focus();\r\n }\r\n this.inputOpened = true;\r\n }\r\n\r\n /**\r\n * Close input\r\n * @param {boolean} clearSavedSelection — we don't need to clear saved selection\r\n * on toggle-clicks on the icon of opened Toolbar\r\n */\r\n private closeActions(clearSavedSelection: boolean = true): void {\r\n this.nodes.input.classList.remove(this.CSS.inputShowed);\r\n this.nodes.input.value = '';\r\n if (clearSavedSelection) {\r\n this.selection.clearSaved();\r\n }\r\n this.inputOpened = false;\r\n }\r\n\r\n /**\r\n * Enter pressed on input\r\n * @param {KeyboardEvent} event\r\n */\r\n private enterPressed(event: KeyboardEvent): void {\r\n let value = this.nodes.input.value || '';\r\n\r\n if (!value.trim()) {\r\n this.selection.restore();\r\n this.unlink();\r\n event.preventDefault();\r\n this.closeActions();\r\n }\r\n\r\n if (!this.validateURL(value)) {\r\n /**\r\n * @todo show notification 'Incorrect Link'\r\n */\r\n _.log('Incorrect Link pasted', 'warn', value);\r\n return;\r\n }\r\n\r\n value = this.prepareLink(value);\r\n\r\n this.selection.restore();\r\n this.insertLink(value);\r\n\r\n /**\r\n * Preventing events that will be able to happen\r\n */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n\r\n this.closeActions();\r\n this.inlineToolbar.close();\r\n this.checkState();\r\n }\r\n\r\n /**\r\n * Detects if passed string is URL\r\n * @param {string} str\r\n * @return {Boolean}\r\n */\r\n private validateURL(str: string): boolean {\r\n /**\r\n * Don't allow spaces\r\n */\r\n return !/\\s/.test(str);\r\n }\r\n\r\n /**\r\n * Process link before injection\r\n * - sanitize\r\n * - add protocol for links like 'google.com'\r\n * @param {string} link - raw user input\r\n */\r\n private prepareLink(link: string): string {\r\n link = link.trim();\r\n link = this.addProtocol(link);\r\n return link;\r\n }\r\n\r\n /**\r\n * Add 'http' protocol to the links like 'vc.ru', 'google.com'\r\n * @param {String} link\r\n */\r\n private addProtocol(link: string): string {\r\n /**\r\n * If protocol already exists, do nothing\r\n */\r\n if (/^(\\w+):\\/\\//.test(link)) {\r\n return link;\r\n }\r\n\r\n /**\r\n * We need to add missed HTTP protocol to the link, but skip 2 cases:\r\n * 1) Internal links like \"/general\"\r\n * 2) Anchors looks like \"#results\"\r\n * 3) Protocol-relative URLs like \"//google.com\"\r\n */\r\n const isInternal = /^\\/[^\\/\\s]/.test(link),\r\n isAnchor = link.substring(0, 1) === '#',\r\n isProtocolRelative = /^\\/\\/[^\\/\\s]/.test(link);\r\n\r\n if (!isInternal && !isAnchor && !isProtocolRelative) {\r\n link = 'http://' + link;\r\n }\r\n\r\n return link;\r\n }\r\n\r\n /**\r\n * Inserts <a> tag with \"href\"\r\n * @param {string} link - \"href\" value\r\n */\r\n private insertLink(link: string): void {\r\n\r\n /**\r\n * Edit all link, not selected part\r\n */\r\n const anchorTag = this.selection.findParentTag('A');\r\n\r\n if (anchorTag) {\r\n this.selection.expandToTag(anchorTag);\r\n }\r\n\r\n document.execCommand(this.commandLink, false, link);\r\n }\r\n\r\n /**\r\n * Removes <a> tag\r\n */\r\n private unlink(): void {\r\n document.execCommand(this.commandUnlink);\r\n }\r\n}\r\n","var map = {\n\t\"./api\": \"./src/components/modules/api/index.ts\",\n\t\"./api/\": \"./src/components/modules/api/index.ts\",\n\t\"./api/blocks\": \"./src/components/modules/api/blocks.ts\",\n\t\"./api/blocks.ts\": \"./src/components/modules/api/blocks.ts\",\n\t\"./api/caret\": \"./src/components/modules/api/caret.ts\",\n\t\"./api/caret.ts\": \"./src/components/modules/api/caret.ts\",\n\t\"./api/events\": \"./src/components/modules/api/events.ts\",\n\t\"./api/events.ts\": \"./src/components/modules/api/events.ts\",\n\t\"./api/index\": \"./src/components/modules/api/index.ts\",\n\t\"./api/index.ts\": \"./src/components/modules/api/index.ts\",\n\t\"./api/listeners\": \"./src/components/modules/api/listeners.ts\",\n\t\"./api/listeners.ts\": \"./src/components/modules/api/listeners.ts\",\n\t\"./api/notifier\": \"./src/components/modules/api/notifier.ts\",\n\t\"./api/notifier.ts\": \"./src/components/modules/api/notifier.ts\",\n\t\"./api/sanitizer\": \"./src/components/modules/api/sanitizer.ts\",\n\t\"./api/sanitizer.ts\": \"./src/components/modules/api/sanitizer.ts\",\n\t\"./api/saver\": \"./src/components/modules/api/saver.ts\",\n\t\"./api/saver.ts\": \"./src/components/modules/api/saver.ts\",\n\t\"./api/selection\": \"./src/components/modules/api/selection.ts\",\n\t\"./api/selection.ts\": \"./src/components/modules/api/selection.ts\",\n\t\"./api/styles\": \"./src/components/modules/api/styles.ts\",\n\t\"./api/styles.ts\": \"./src/components/modules/api/styles.ts\",\n\t\"./api/toolbar\": \"./src/components/modules/api/toolbar.ts\",\n\t\"./api/toolbar.ts\": \"./src/components/modules/api/toolbar.ts\",\n\t\"./blockEvents\": \"./src/components/modules/blockEvents.ts\",\n\t\"./blockEvents.ts\": \"./src/components/modules/blockEvents.ts\",\n\t\"./blockManager\": \"./src/components/modules/blockManager.ts\",\n\t\"./blockManager.ts\": \"./src/components/modules/blockManager.ts\",\n\t\"./blockSelection\": \"./src/components/modules/blockSelection.ts\",\n\t\"./blockSelection.ts\": \"./src/components/modules/blockSelection.ts\",\n\t\"./caret\": \"./src/components/modules/caret.ts\",\n\t\"./caret.ts\": \"./src/components/modules/caret.ts\",\n\t\"./dragNDrop\": \"./src/components/modules/dragNDrop.ts\",\n\t\"./dragNDrop.ts\": \"./src/components/modules/dragNDrop.ts\",\n\t\"./events\": \"./src/components/modules/events.ts\",\n\t\"./events.ts\": \"./src/components/modules/events.ts\",\n\t\"./listeners\": \"./src/components/modules/listeners.ts\",\n\t\"./listeners.ts\": \"./src/components/modules/listeners.ts\",\n\t\"./modificationsObserver\": \"./src/components/modules/modificationsObserver.ts\",\n\t\"./modificationsObserver.ts\": \"./src/components/modules/modificationsObserver.ts\",\n\t\"./notifier\": \"./src/components/modules/notifier.ts\",\n\t\"./notifier.ts\": \"./src/components/modules/notifier.ts\",\n\t\"./paste\": \"./src/components/modules/paste.ts\",\n\t\"./paste.ts\": \"./src/components/modules/paste.ts\",\n\t\"./renderer\": \"./src/components/modules/renderer.ts\",\n\t\"./renderer.ts\": \"./src/components/modules/renderer.ts\",\n\t\"./sanitizer\": \"./src/components/modules/sanitizer.ts\",\n\t\"./sanitizer.ts\": \"./src/components/modules/sanitizer.ts\",\n\t\"./saver\": \"./src/components/modules/saver.ts\",\n\t\"./saver.ts\": \"./src/components/modules/saver.ts\",\n\t\"./shortcuts\": \"./src/components/modules/shortcuts.ts\",\n\t\"./shortcuts.ts\": \"./src/components/modules/shortcuts.ts\",\n\t\"./toolbar\": \"./src/components/modules/toolbar/index.ts\",\n\t\"./toolbar/\": \"./src/components/modules/toolbar/index.ts\",\n\t\"./toolbar/blockSettings\": \"./src/components/modules/toolbar/blockSettings.ts\",\n\t\"./toolbar/blockSettings.ts\": \"./src/components/modules/toolbar/blockSettings.ts\",\n\t\"./toolbar/index\": \"./src/components/modules/toolbar/index.ts\",\n\t\"./toolbar/index.ts\": \"./src/components/modules/toolbar/index.ts\",\n\t\"./toolbar/inline\": \"./src/components/modules/toolbar/inline.ts\",\n\t\"./toolbar/inline.ts\": \"./src/components/modules/toolbar/inline.ts\",\n\t\"./toolbar/toolbox\": \"./src/components/modules/toolbar/toolbox.ts\",\n\t\"./toolbar/toolbox.ts\": \"./src/components/modules/toolbar/toolbox.ts\",\n\t\"./tools\": \"./src/components/modules/tools.ts\",\n\t\"./tools.ts\": \"./src/components/modules/tools.ts\",\n\t\"./ui\": \"./src/components/modules/ui.ts\",\n\t\"./ui.ts\": \"./src/components/modules/ui.ts\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src/components/modules sync recursive ^\\\\.\\\\/.*$\";","import Module from '../../__module';\n\nimport {Blocks} from '../../../../types/api';\nimport {OutputData} from '../../../../types';\nimport Block from '../../block';\nimport {ModuleConfig} from '../../../types-internal/module-config';\n\n/**\n * @class BlocksAPI\n * provides with methods working with Block\n */\nexport default class BlocksAPI extends Module {\n /**\n * Available methods\n * @return {Blocks}\n */\n get methods(): Blocks {\n return {\n clear: () => this.clear(),\n render: (data: OutputData) => this.render(data),\n delete: () => this.delete(),\n swap: (fromIndex: number, toIndex: number) => this.swap(fromIndex, toIndex),\n getBlockByIndex: (index: number) => this.getBlockByIndex(index),\n getCurrentBlockIndex: () => this.getCurrentBlockIndex(),\n getBlocksCount: () => this.getBlocksCount(),\n stretchBlock: (index: number, status: boolean = true) => this.stretchBlock(index, status),\n insertNewBlock: () => this.insertNewBlock(),\n };\n }\n\n /**\n * Returns Blocks count\n * @return {number}\n */\n public getBlocksCount(): number {\n return this.Editor.BlockManager.blocks.length;\n }\n\n /**\n * Returns current block index\n * @return {number}\n */\n public getCurrentBlockIndex(): number {\n return this.Editor.BlockManager.currentBlockIndex;\n }\n\n /**\n * Returns Block holder by Block index\n * @param {Number} index\n *\n * @return {HTMLElement}\n */\n public getBlockByIndex(index: number): HTMLElement {\n const block = this.Editor.BlockManager.getBlockByIndex(index);\n return block.holder;\n }\n\n /**\n * Call Block Manager method that swap Blocks\n * @param {number} fromIndex - position of first Block\n * @param {number} toIndex - position of second Block\n */\n public swap(fromIndex: number, toIndex: number): void {\n this.Editor.BlockManager.swap(fromIndex, toIndex);\n\n /**\n * Move toolbar\n * DO not close the settings\n */\n this.Editor.Toolbar.move(false);\n }\n\n /**\n * Deletes Block\n * @param blockIndex\n */\n public delete(blockIndex?: number): void {\n this.Editor.BlockManager.removeBlock(blockIndex);\n\n /**\n * in case of last block deletion\n * Insert new initial empty block\n */\n if (this.Editor.BlockManager.blocks.length === 0) {\n this.Editor.BlockManager.insert();\n }\n\n /**\n * In case of deletion first block we need to set caret to the current Block\n */\n if (this.Editor.BlockManager.currentBlockIndex === 0) {\n this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock);\n } else {\n this.Editor.Caret.navigatePrevious(true);\n }\n\n this.Editor.Toolbar.close();\n }\n\n /**\n * Clear Editor's area\n */\n public clear(): void {\n this.Editor.BlockManager.clear(true);\n }\n\n /**\n * Fills Editor with Blocks data\n * @param {OutputData} data — Saved Editor data\n */\n public render(data: OutputData): Promise<void> {\n this.Editor.BlockManager.clear();\n return this.Editor.Renderer.render(data.blocks);\n }\n\n /**\n * Stretch Block's content\n * @param {number} index\n * @param {boolean} status - true to enable, false to disable\n */\n public stretchBlock(index: number, status: boolean = true): void {\n const block = this.Editor.BlockManager.getBlockByIndex(index);\n\n if (!block) {\n return;\n }\n\n block.stretched = status;\n }\n\n /**\n * Insert new Block\n * After set caret to this Block\n */\n public insertNewBlock() {\n const newBlock = this.Editor.BlockManager.insert();\n this.Editor.Caret.setToBlock(newBlock);\n }\n}\n","import Module from '../../__module';\nimport {Caret} from '../../../../types/api';\nimport {ModuleConfig} from '../../../types-internal/module-config';\n\n/**\n * @class CaretAPI\n * provides with methods to work with caret\n */\nexport default class CaretAPI extends Module {\n /**\n * Available methods\n * @return {Caret}\n */\n get methods(): Caret {\n return {};\n }\n}\n","import Module from '../../__module';\nimport {Events} from '../../../../types/api';\n\n/**\n * @class EventsAPI\n * provides with methods working with Toolbar\n */\nexport default class EventsAPI extends Module {\n /**\n * Available methods\n * @return {Events}\n */\n get methods(): Events {\n return {\n emit: (eventName: string, data: object) => this.emit(eventName, data),\n off: (eventName: string, callback: () => void) => this.off(eventName, callback),\n on: (eventName: string, callback: () => void) => this.on(eventName, callback),\n };\n }\n\n /**\n * Subscribe on Events\n * @param {String} eventName\n * @param {Function} callback\n */\n public on(eventName, callback): void {\n this.Editor.Events.on(eventName, callback);\n }\n\n /**\n * Emit event with data\n * @param {String} eventName\n * @param {Object} data\n */\n public emit(eventName, data): void {\n this.Editor.Events.emit(eventName, data);\n }\n\n /**\n * Unsubscribe from Event\n * @param {String} eventName\n * @param {Function} callback\n */\n public off(eventName, callback): void {\n this.Editor.Events.off(eventName, callback);\n }\n\n}\n","/**\n * @module API\n * @copyright <CodeX Team> 2018\n *\n * Each block has an Editor API instance to use provided public methods\n * if you cant to read more about how API works, please see docs\n */\nimport Module from '../../__module';\nimport {API as APIInterfaces} from '../../../../types';\n\n/**\n * @class API\n */\nexport default class API extends Module {\n public get methods(): APIInterfaces {\n return {\n blocks: this.Editor.BlocksAPI.methods,\n caret: this.Editor.CaretAPI.methods,\n events: this.Editor.EventsAPI.methods,\n listeners: this.Editor.ListenersAPI.methods,\n notifier: this.Editor.NotifierAPI.methods,\n sanitizer: this.Editor.SanitizerAPI.methods,\n saver: this.Editor.SaverAPI.methods,\n selection: this.Editor.SelectionAPI.methods,\n styles: this.Editor.StylesAPI.classes,\n toolbar: this.Editor.ToolbarAPI.methods,\n } as APIInterfaces;\n }\n}\n","import Module from '../../__module';\nimport {Listeners} from '../../../../types/api';\n\n/**\n * @class ListenersAPI\n * Provides with methods working with DOM Listener\n */\nexport default class ListenersAPI extends Module {\n /**\n * Available methods\n * @return {Listeners}\n */\n get methods(): Listeners {\n return {\n on: (element: HTMLElement, eventType, handler, useCapture) => this.on(element, eventType, handler, useCapture),\n off: (element, eventType, handler) => this.off(element, eventType, handler),\n };\n }\n\n /**\n * adds DOM event listener\n *\n * @param {HTMLElement} element\n * @param {string} eventType\n * @param {() => void} handler\n * @param {boolean} useCapture\n */\n public on(element: HTMLElement, eventType: string, handler: () => void, useCapture?: boolean): void {\n this.Editor.Listeners.on(element, eventType, handler, useCapture);\n }\n\n /**\n * Removes DOM listener from element\n *\n * @param element\n * @param eventType\n * @param handler\n */\n public off(element, eventType, handler): void {\n this.Editor.Listeners.off(element, eventType, handler);\n }\n}\n","import Module from '../../__module';\r\nimport {Notifier} from '../../../../types/api';\r\nimport {ConfirmNotifierOptions, NotifierOptions, PromptNotifierOptions} from 'codex-notifier';\r\n\r\nexport default class NotifierAPI extends Module {\r\n\r\n /**\r\n * Available methods\r\n */\r\n get methods(): Notifier {\r\n return {\r\n show: (options: NotifierOptions | ConfirmNotifierOptions | PromptNotifierOptions) => this.show(options),\r\n };\r\n }\r\n\r\n public show(options: NotifierOptions | ConfirmNotifierOptions | PromptNotifierOptions) {\r\n return this.Editor.Notifier.show(options);\r\n }\r\n}\r\n","import Module from '../../__module';\nimport {Sanitizer} from '../../../../types/api';\n\n/**\n * @class SanitizerAPI\n * Provides CodeX Editor Sanitizer that allows developers to clean their HTML\n */\nexport default class SanitizerAPI extends Module {\n /**\n * Available methods\n * @return {Sanitizer}\n */\n get methods(): Sanitizer {\n return {\n clean: (taintString, config) => this.clean(taintString, config),\n };\n }\n\n public clean(taintString, config) {\n return this.Editor.Sanitizer.clean(taintString, config);\n }\n\n}\n","import Module from '../../__module';\nimport {Saver} from '../../../../types/api';\nimport {OutputData} from '../../../../types';\n\n/**\n * @class SaverAPI\n * provides with methods to save data\n */\nexport default class SaverAPI extends Module {\n /**\n * Available methods\n * @return {Saver}\n */\n get methods(): Saver {\n return {\n save: () => this.save(),\n };\n }\n\n /**\n * Return Editor's data\n */\n public save(): Promise<OutputData> {\n return this.Editor.Saver.save();\n }\n}\n","import Module from '../../__module';\nimport SelectionUtils from '../../selection';\nimport {Selection as SelectionAPIInterface} from '../../../../types/api';\n\n/**\n * @class SelectionAPI\n * Provides with methods working with SelectionUtils\n */\nexport default class SelectionAPI extends Module {\n /**\n * Available methods\n * @return {SelectionAPIInterface}\n */\n get methods(): SelectionAPIInterface {\n return {\n findParentTag: (tagName: string, className?: string) => this.findParentTag(tagName, className),\n expandToTag: (node: HTMLElement) => this.expandToTag(node),\n };\n }\n\n /**\n * Looks ahead from selection and find passed tag with class name\n * @param {string} tagName - tag to find\n * @param {string} className - tag's class name\n * @return {HTMLElement|null}\n */\n public findParentTag(tagName: string, className?: string): HTMLElement|null {\n return new SelectionUtils().findParentTag(tagName, className);\n }\n\n /**\n * Expand selection to passed tag\n * @param {HTMLElement} node - tag that should contain selection\n */\n public expandToTag(node: HTMLElement): void {\n new SelectionUtils().expandToTag(node);\n }\n\n}\n","import Module from '../../__module';\nimport {Styles} from '../../../../types/api';\n\n/**\n *\n */\nexport default class StylesAPI extends Module {\n get classes(): Styles {\n return {\n /**\n * Base Block styles\n */\n block: 'cdx-block',\n\n /**\n * Inline Tools styles\n */\n inlineToolButton: 'ce-inline-tool',\n inlineToolButtonActive: 'ce-inline-tool--active',\n\n /**\n * UI elements\n */\n input: 'cdx-input',\n loader: 'cdx-loader',\n button: 'cdx-button',\n\n /**\n * Settings styles\n */\n settingsButton: 'cdx-settings-button',\n settingsButtonActive: 'cdx-settings-button--active',\n };\n }\n}\n","import Module from '../../__module';\nimport {Toolbar} from '../../../../types/api';\n\n/**\n * @class ToolbarAPI\n * provides with methods working with Toolbar\n */\nexport default class ToolbarAPI extends Module {\n /**\n * Available methods\n * @return {Toolbar}\n */\n get methods(): Toolbar {\n return {\n close: () => this.close(),\n open: () => this.open(),\n };\n }\n\n /**\n * Open toolbar\n */\n public open(): void {\n this.Editor.Toolbar.open();\n }\n\n /**\n * Close toolbar and all included elements\n */\n public close(): void {\n this.Editor.Toolbar.close();\n }\n\n}\n","/**\r\n * Contains keyboard and mouse events binded on each Block by Block Manager\r\n */\r\nimport Module from '../__module';\r\nimport _ from '../utils';\r\n\r\nexport default class BlockEvents extends Module {\r\n /**\r\n * All keydowns on Block\r\n * @param {KeyboardEvent} event - keydown\r\n */\r\n public keydown(event: KeyboardEvent): void {\r\n /**\r\n * Run common method for all keydown events\r\n */\r\n this.beforeKeydownProcessing(event);\r\n\r\n /**\r\n * Fire keydown processor by event.keyCode\r\n */\r\n switch (event.keyCode) {\r\n case _.keyCodes.BACKSPACE:\r\n this.backspace(event);\r\n break;\r\n\r\n case _.keyCodes.ENTER:\r\n this.enter(event);\r\n break;\r\n\r\n case _.keyCodes.DOWN:\r\n case _.keyCodes.RIGHT:\r\n this.arrowRightAndDown(event);\r\n break;\r\n\r\n case _.keyCodes.UP:\r\n case _.keyCodes.LEFT:\r\n this.arrowLeftAndUp(event);\r\n break;\r\n\r\n case _.keyCodes.TAB:\r\n this.tabPressed(event);\r\n break;\r\n\r\n case _.keyCodes.ESC:\r\n this.escapePressed(event);\r\n break;\r\n default:\r\n this.defaultHandler();\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Fires on keydown before event processing\r\n * @param {KeyboardEvent} event - keydown\r\n */\r\n public beforeKeydownProcessing(event): void {\r\n /**\r\n * Do not close Toolbox on Tabs or on Enter with opened Toolbox\r\n */\r\n if (!this.needToolbarClosing(event)) {\r\n return;\r\n }\r\n\r\n this.Editor.Toolbar.close();\r\n\r\n const cmdKey = event.ctrlKey || event.metaKey;\r\n const altKey = event.altKey;\r\n const shiftKey = event.shiftKey;\r\n\r\n /** clear selecton when it is not CMD, SHIFT, ALT keys */\r\n if (cmdKey || altKey || shiftKey) {\r\n return;\r\n }\r\n\r\n /**\r\n * Clear all highlightings\r\n */\r\n this.Editor.BlockManager.clearFocused();\r\n\r\n /** Clear Block selection and restore caret */\r\n this.Editor.BlockSelection.clearSelection(true);\r\n }\r\n\r\n /**\r\n * Key up on Block:\r\n * - shows Inline Toolbar if something selected\r\n */\r\n public keyup(event): void {\r\n this.Editor.InlineToolbar.handleShowingEvent(event);\r\n }\r\n\r\n /**\r\n * Mouse up on Block:\r\n * - shows Inline Toolbar if something selected\r\n */\r\n public mouseUp(event): void {\r\n this.Editor.InlineToolbar.handleShowingEvent(event);\r\n }\r\n\r\n /**\r\n * Open Toolbox to leaf Tools\r\n * @param {KeyboardEvent} event\r\n */\r\n public tabPressed(event): void {\r\n\r\n const {currentBlock} = this.Editor.BlockManager;\r\n\r\n /** Prevent Default behaviour */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n /** this property defines leaf direction */\r\n const shiftKey = event.shiftKey,\r\n direction = shiftKey ? 'left' : 'right';\r\n\r\n if (this.Editor.Toolbar.opened && currentBlock.isEmpty) {\r\n this.Editor.Toolbox.open();\r\n } else if (currentBlock.isEmpty) {\r\n this.Editor.Toolbar.open();\r\n this.Editor.Toolbar.plusButton.show();\r\n this.Editor.Toolbox.open();\r\n }\r\n\r\n if (this.Editor.Toolbox.opened) {\r\n this.Editor.Toolbox.leaf(direction);\r\n }\r\n }\r\n\r\n /**\r\n * Escape pressed\r\n * @param event\r\n */\r\n public escapePressed(event): void { }\r\n\r\n /**\r\n * Add drop target styles\r\n *\r\n * @param {DragEvent} e\r\n */\r\n public dragOver(e: DragEvent) {\r\n const block = this.Editor.BlockManager.getBlockByChildNode(e.target as Node);\r\n\r\n block.dropTarget = true;\r\n }\r\n\r\n /**\r\n * Remove drop target style\r\n *\r\n * @param {DragEvent} e\r\n */\r\n public dragLeave(e: DragEvent) {\r\n const block = this.Editor.BlockManager.getBlockByChildNode(e.target as Node);\r\n\r\n block.dropTarget = false;\r\n }\r\n\r\n /**\r\n * ENTER pressed on block\r\n * @param {KeyboardEvent} event - keydown\r\n */\r\n private enter(event: KeyboardEvent): void {\r\n const currentBlock = this.Editor.BlockManager.currentBlock,\r\n tool = this.Editor.Tools.available[currentBlock.name];\r\n\r\n /**\r\n * Don't handle Enter keydowns when Tool sets enableLineBreaks to true.\r\n * Uses for Tools like <code> where line breaks should be handled by default behaviour.\r\n */\r\n if (tool && tool[this.Editor.Tools.apiSettings.IS_ENABLED_LINE_BREAKS]) {\r\n return;\r\n }\r\n\r\n if (this.Editor.Toolbox.opened && this.Editor.Toolbox.getActiveTool) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n this.Editor.Toolbox.toolButtonActivate(event, this.Editor.Toolbox.getActiveTool);\r\n return;\r\n }\r\n\r\n /**\r\n * Allow to create linebreaks by Shift+Enter\r\n */\r\n if (event.shiftKey) {\r\n return;\r\n }\r\n /**\r\n * Split the Current Block into two blocks\r\n * Renew local current node after split\r\n */\r\n const newCurrent = this.Editor.BlockManager.split();\r\n\r\n this.Editor.Caret.setToBlock(newCurrent);\r\n\r\n /**\r\n * If new Block is empty\r\n */\r\n if (this.Editor.Tools.isInitial(newCurrent.tool) && newCurrent.isEmpty) {\r\n /**\r\n * Show Toolbar\r\n */\r\n this.Editor.Toolbar.open();\r\n\r\n /**\r\n * Show Plus Button\r\n */\r\n this.Editor.Toolbar.plusButton.show();\r\n }\r\n\r\n event.preventDefault();\r\n event.stopPropagation();\r\n event.stopImmediatePropagation();\r\n }\r\n\r\n /**\r\n * Handle backspace keydown on Block\r\n * @param {KeyboardEvent} event - keydown\r\n */\r\n private backspace(event: KeyboardEvent): void {\r\n const BM = this.Editor.BlockManager;\r\n const currentBlock = this.Editor.BlockManager.currentBlock,\r\n tool = this.Editor.Tools.available[currentBlock.name];\r\n\r\n /**\r\n * Don't handle Backspaces when Tool sets enableLineBreaks to true.\r\n * Uses for Tools like <code> where line breaks should be handled by default behaviour.\r\n */\r\n if (tool && tool[this.Editor.Tools.apiSettings.IS_ENABLED_LINE_BREAKS]) {\r\n return;\r\n }\r\n\r\n const isFirstBlock = BM.currentBlockIndex === 0,\r\n canMergeBlocks = this.Editor.Caret.isAtStart && !isFirstBlock;\r\n\r\n /** If current Block is empty just remove this Block */\r\n if (this.Editor.BlockManager.currentBlock.isEmpty) {\r\n this.Editor.BlockManager.removeBlock();\r\n\r\n /**\r\n * in case of last block deletion\r\n * Insert new initial empty block\r\n */\r\n if (this.Editor.BlockManager.blocks.length === 0) {\r\n this.Editor.BlockManager.insert();\r\n }\r\n\r\n /**\r\n * In case of deletion first block we need to set caret to the current Block\r\n * After BlockManager removes the Block (which is current now),\r\n * pointer that references to the current Block, now points to the Next\r\n */\r\n if (this.Editor.BlockManager.currentBlockIndex === 0) {\r\n this.Editor.Caret.setToBlock(this.Editor.BlockManager.currentBlock);\r\n } else {\r\n this.Editor.Caret.navigatePrevious(true);\r\n }\r\n\r\n this.Editor.Toolbar.close();\r\n return;\r\n }\r\n\r\n if (!canMergeBlocks) {\r\n return;\r\n }\r\n\r\n // preventing browser default behaviour\r\n event.preventDefault();\r\n\r\n const targetBlock = BM.getBlockByIndex(BM.currentBlockIndex - 1),\r\n blockToMerge = BM.currentBlock;\r\n\r\n /**\r\n * Blocks that can be merged:\r\n * 1) with the same Name\r\n * 2) Tool has 'merge' method\r\n *\r\n * other case will handle as usual ARROW LEFT behaviour\r\n */\r\n if (blockToMerge.name !== targetBlock.name || !targetBlock.mergeable) {\r\n if (this.Editor.Caret.navigatePrevious()) {\r\n this.Editor.Toolbar.close();\r\n }\r\n\r\n return;\r\n }\r\n\r\n this.Editor.Caret.createShadow(targetBlock.pluginsContent);\r\n BM.mergeBlocks(targetBlock, blockToMerge)\r\n .then( () => {\r\n /** Restore caret position after merge */\r\n this.Editor.Caret.restoreCaret(targetBlock.pluginsContent as HTMLElement);\r\n targetBlock.pluginsContent.normalize();\r\n this.Editor.Toolbar.close();\r\n });\r\n }\r\n\r\n /**\r\n * Handle right and down keyboard keys\r\n */\r\n private arrowRightAndDown(event: KeyboardEvent): void {\r\n if (this.Editor.Caret.navigateNext()) {\r\n /**\r\n * Default behaviour moves cursor by 1 character, we need to prevent it\r\n */\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Handle left and up keyboard keys\r\n */\r\n private arrowLeftAndUp(event: KeyboardEvent): void {\r\n if (this.Editor.Caret.navigatePrevious()) {\r\n /**\r\n * Default behaviour moves cursor by 1 character, we need to prevent it\r\n */\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n /**\r\n * Default keydown handler\r\n */\r\n private defaultHandler(): void {}\r\n\r\n /**\r\n * Cases when we need to close Toolbar\r\n */\r\n private needToolbarClosing(event) {\r\n const toolboxItemSelected = (event.keyCode === _.keyCodes.ENTER && this.Editor.Toolbox.opened),\r\n flippingToolboxItems = event.keyCode === _.keyCodes.TAB;\r\n\r\n return !(event.shiftKey || flippingToolboxItems || toolboxItemSelected);\r\n }\r\n\r\n}\r\n","/**\n * @class BlockManager\n * @classdesc Manage editor`s blocks storage and appearance\n *\n * @module BlockManager\n *\n * @version 2.0.0\n */\nimport Block from '../block';\nimport Module from '../__module';\nimport $ from '../dom';\nimport Blocks from '../blocks';\nimport {BlockTool, BlockToolConstructable, BlockToolData, ToolConfig} from '../../../types';\nimport Caret from './caret';\n\n/**\n * @typedef {BlockManager} BlockManager\n * @property {Number} currentBlockIndex - Index of current working block\n * @property {Proxy} _blocks - Proxy for Blocks instance {@link Blocks}\n */\nexport default class BlockManager extends Module {\n\n /**\n * returns last Block\n * @return {Block}\n */\n public get lastBlock(): Block {\n return this._blocks[this._blocks.length - 1];\n }\n\n /**\n * Get current Block instance\n *\n * @return {Block}\n */\n public get currentBlock(): Block {\n return this._blocks[this.currentBlockIndex];\n }\n\n /**\n * Returns next Block instance\n * @return {Block|null}\n */\n public get nextBlock(): Block {\n const isLastBlock = this.currentBlockIndex === (this._blocks.length - 1);\n\n if (isLastBlock) {\n return null;\n }\n\n return this._blocks[this.currentBlockIndex + 1];\n }\n\n /**\n * Return first Block with inputs after current Block\n *\n * @returns {Block | undefined}\n */\n public get nextContentfulBlock(): Block {\n const nextBlocks = this.blocks.slice(this.currentBlockIndex + 1);\n\n return nextBlocks.find((block) => !!block.inputs.length);\n }\n\n /**\n * Return first Block with inputs before current Block\n *\n * @returns {Block | undefined}\n */\n public get previousContentfulBlock(): Block {\n const previousBlocks = this.blocks.slice(0, this.currentBlockIndex).reverse();\n\n return previousBlocks.find((block) => !!block.inputs.length);\n }\n\n /**\n * Returns previous Block instance\n * @return {Block|null}\n */\n public get previousBlock(): Block {\n const isFirstBlock = this.currentBlockIndex === 0;\n\n if (isFirstBlock) {\n return null;\n }\n\n return this._blocks[this.currentBlockIndex - 1];\n }\n\n /**\n * Get array of Block instances\n *\n * @returns {Block[]} {@link Blocks#array}\n */\n public get blocks(): Block[] {\n return this._blocks.array;\n }\n\n /**\n * Index of current working block\n *\n * @type {number}\n */\n public currentBlockIndex: number = -1;\n\n /**\n * Proxy for Blocks instance {@link Blocks}\n *\n * @type {Proxy}\n * @private\n */\n private _blocks: Blocks = null;\n\n /**\n * Should be called after Editor.UI preparation\n * Define this._blocks property\n *\n * @returns {Promise}\n */\n public async prepare() {\n const blocks = new Blocks(this.Editor.UI.nodes.redactor);\n\n /**\n * We need to use Proxy to overload set/get [] operator.\n * So we can use array-like syntax to access blocks\n *\n * @example\n * this._blocks[0] = new Block(...);\n *\n * block = this._blocks[0];\n *\n * @todo proxy the enumerate method\n *\n * @type {Proxy}\n * @private\n */\n this._blocks = new Proxy(blocks, {\n set: Blocks.set,\n get: Blocks.get,\n });\n }\n\n /**\n * Creates Block instance by tool name\n *\n * @param {String} toolName - tools passed in editor config {@link EditorConfig#tools}\n * @param {Object} data - constructor params\n * @param {Object} settings - block settings\n *\n * @return {Block}\n */\n public composeBlock(toolName: string, data: BlockToolData, settings?: ToolConfig): Block {\n const toolInstance = this.Editor.Tools.construct(toolName, data) as BlockTool;\n const toolClass = this.Editor.Tools.available[toolName] as BlockToolConstructable;\n const block = new Block(toolName, toolInstance, toolClass, settings, this.Editor.API.methods);\n\n this.bindEvents(block);\n\n return block;\n }\n\n /**\n * Insert new block into _blocks\n *\n * @param {String} toolName — plugin name, by default method inserts initial block type\n * @param {Object} data — plugin data\n * @param {Object} settings - default settings\n *\n * @return {Block}\n */\n public insert(\n toolName: string = this.config.initialBlock,\n data: BlockToolData = {},\n settings: ToolConfig = {},\n ): Block {\n // Increment index before construct,\n // because developers can use API/Blocks/getCurrentInputIndex on the render() method\n const newIndex = ++this.currentBlockIndex;\n const block = this.composeBlock(toolName, data, settings);\n\n this._blocks[newIndex] = block;\n return block;\n }\n\n /**\n * Always inserts at the end\n * @return {Block}\n */\n public insertAtEnd(): Block {\n /**\n * Define new value for current block index\n */\n this.currentBlockIndex = this.blocks.length - 1;\n\n /**\n * Insert initial typed block\n */\n return this.insert();\n }\n\n /**\n * Merge two blocks\n * @param {Block} targetBlock - previous block will be append to this block\n * @param {Block} blockToMerge - block that will be merged with target block\n *\n * @return {Promise} - the sequence that can be continued\n */\n public async mergeBlocks(targetBlock: Block, blockToMerge: Block): Promise<void> {\n const blockToMergeIndex = this._blocks.indexOf(blockToMerge);\n\n if (blockToMerge.isEmpty) {\n return;\n }\n\n const blockToMergeData = await blockToMerge.data;\n\n await targetBlock.mergeWith(blockToMergeData);\n\n this.removeBlock(blockToMergeIndex);\n this.currentBlockIndex = this._blocks.indexOf(targetBlock);\n }\n\n /**\n * Remove block with passed index or remove last\n * @param {Number|null} index\n */\n public removeBlock(index?: number): void {\n if (!index) {\n index = this.currentBlockIndex;\n }\n this._blocks.remove(index);\n\n /**\n * If first Block was removed, insert new Initial Block and set focus on it`s first input\n */\n if (!this.blocks.length) {\n this.currentBlockIndex = -1;\n this.insert();\n this.currentBlock.firstInput.focus();\n }\n }\n\n /**\n * Split current Block\n * 1. Extract content from Caret position to the Block`s end\n * 2. Insert a new Block below current one with extracted content\n *\n * @return {Block}\n */\n public split(): Block {\n const extractedFragment = this.Editor.Caret.extractFragmentFromCaretPosition();\n const wrapper = $.make('div');\n\n wrapper.append(extractedFragment);\n\n /**\n * @todo make object in accordance with Tool\n */\n const data = {\n text: $.isEmpty(wrapper) ? '' : wrapper.innerHTML,\n };\n\n /**\n * Renew current Block\n * @type {Block}\n */\n return this.insert(this.config.initialBlock, data);\n }\n\n /**\n * Replace current working block\n *\n * @param {String} toolName — plugin name\n * @param {Object} data — plugin data\n *\n * @return {Block}\n */\n public replace(toolName: string, data: BlockToolData = {}): Block {\n const block = this.composeBlock(toolName, data);\n\n this._blocks.insert(this.currentBlockIndex, block, true);\n\n return block;\n }\n\n /**\n * Returns Block by passed index\n * @param {Number} index\n * @return {Block}\n */\n public getBlockByIndex(index): Block {\n return this._blocks[index];\n }\n\n /**\n * Get Block instance by html element\n * @param {Node} element\n * @returns {Block}\n */\n public getBlock(element: HTMLElement): Block {\n if (!$.isElement(element)) {\n element = element.parentNode as HTMLElement;\n }\n\n const nodes = this._blocks.nodes,\n firstLevelBlock = element.closest(`.${Block.CSS.wrapper}`),\n index = nodes.indexOf(firstLevelBlock as HTMLElement);\n\n if (index >= 0) {\n return this._blocks[index];\n }\n }\n\n /**\n * Remove selection from all Blocks then highlight only Current Block\n */\n public highlightCurrentNode(): void {\n /**\n * Remove previous selected Block's state\n */\n this.clearFocused();\n\n /**\n * Mark current Block as selected\n * @type {boolean}\n */\n this.currentBlock.focused = true;\n }\n\n /**\n * Remove selection from all Blocks\n */\n public clearFocused(): void {\n this.blocks.forEach( (block) => block.focused = false);\n }\n\n /**\n * 1) Find first-level Block from passed child Node\n * 2) Mark it as current\n *\n * @param {Node} childNode - look ahead from this node.\n * @param {string} caretPosition - position where to set caret\n * @throws Error - when passed Node is not included at the Block\n */\n public setCurrentBlockByChildNode(childNode: Node, caretPosition: string = Caret.positions.DEFAULT): void {\n /**\n * If node is Text TextNode\n */\n if (!$.isElement(childNode)) {\n childNode = childNode.parentNode;\n }\n\n const parentFirstLevelBlock = (childNode as HTMLElement).closest(`.${Block.CSS.wrapper}`);\n\n if (parentFirstLevelBlock) {\n /**\n * Update current Block's index\n * @type {number}\n */\n this.currentBlockIndex = this._blocks.nodes.indexOf(parentFirstLevelBlock as HTMLElement);\n\n this.Editor.Caret.setToInput(childNode as HTMLElement, caretPosition);\n } else {\n throw new Error('Can not find a Block from this child Node');\n }\n }\n\n /**\n * Return block which contents passed node\n *\n * @param {Node} childNode\n * @return {Block}\n */\n public getBlockByChildNode(childNode: Node): Block {\n /**\n * If node is Text TextNode\n */\n if (!$.isElement(childNode)) {\n childNode = childNode.parentNode;\n }\n\n const firstLevelBlock = (childNode as HTMLElement).closest(`.${Block.CSS.wrapper}`);\n\n return this.blocks.find((block) => block.holder === firstLevelBlock);\n }\n\n /**\n * Swap Blocks Position\n * @param {Number} fromIndex\n * @param {Number} toIndex\n */\n public swap(fromIndex, toIndex): void {\n /** Move up current Block */\n this._blocks.swap(fromIndex, toIndex);\n\n /** Now actual block moved up so that current block index decreased */\n this.currentBlockIndex = toIndex;\n }\n\n /**\n * Sets current Block Index -1 which means unknown\n * and clear highlightings\n */\n public dropPointer(): void {\n this.currentBlockIndex = -1;\n this.clearFocused();\n }\n\n /**\n * Clears Editor\n * @param {boolean} needAddInitialBlock - 1) in internal calls (for example, in api.blocks.render)\n * we don't need to add empty initial block\n * 2) in api.blocks.clear we should add empty block\n */\n public clear(needAddInitialBlock: boolean = false): void {\n this._blocks.removeAll();\n this.dropPointer();\n\n if (needAddInitialBlock) {\n this.insert(this.config.initialBlock);\n }\n }\n\n /**\n * Bind Events\n * @param {Object} block\n */\n private bindEvents(block: Block): void {\n const {BlockEvents, Listeners} = this.Editor;\n\n Listeners.on(block.holder, 'keydown', (event) => BlockEvents.keydown(event as KeyboardEvent), true);\n Listeners.on(block.holder, 'mouseup', (event) => BlockEvents.mouseUp(event));\n Listeners.on(block.holder, 'keyup', (event) => BlockEvents.keyup(event));\n Listeners.on(block.holder, 'dragover', (event) => BlockEvents.dragOver(event as DragEvent));\n Listeners.on(block.holder, 'dragleave', (event) => BlockEvents.dragLeave(event as DragEvent));\n }\n}\n","/**\r\n * @class BlockSelection\r\n * @classdesc Manages Block selection with shortcut CMD+A and with mouse\r\n *\r\n * @module BlockSelection\r\n * @version 1.0.0\r\n */\r\nimport Module from '../__module';\r\nimport _ from '../utils';\r\nimport $ from '../dom';\r\n\r\nimport SelectionUtils from '../selection';\r\n\r\nexport default class BlockSelection extends Module {\r\n /**\r\n * Flag used to define block selection\r\n * First CMD+A defines it as true and then second CMD+A selects all Blocks\r\n * @type {boolean}\r\n */\r\n private needToSelectAll: boolean = false;\r\n\r\n /**\r\n * SelectionUtils instance\r\n * @type {SelectionUtils}\r\n */\r\n private selection: SelectionUtils;\r\n\r\n /**\r\n * Module Preparation\r\n * Registers Shortcuts CMD+A and CMD+C\r\n * to select all and copy them\r\n */\r\n public prepare(): void {\r\n const { Shortcuts } = this.Editor;\r\n\r\n /** Selection shortcut */\r\n Shortcuts.add({\r\n name: 'CMD+A',\r\n handler: (event) => {\r\n this.handleCommandA(event);\r\n },\r\n });\r\n\r\n /** shortcut to copy all selected blocks */\r\n Shortcuts.add({\r\n name: 'CMD+C',\r\n handler: (event) => {\r\n this.handleCommandC(event);\r\n },\r\n });\r\n\r\n this.selection = new SelectionUtils();\r\n }\r\n\r\n /**\r\n * Clear selection from Blocks\r\n */\r\n public clearSelection(restoreSelection = false) {\r\n const { BlockManager } = this.Editor;\r\n const anyBlockSelected = BlockManager.blocks.findIndex( (block) => block.selected === true) !== -1;\r\n\r\n if (!anyBlockSelected) {\r\n return;\r\n }\r\n\r\n this.needToSelectAll = false;\r\n BlockManager.blocks.forEach( (block) => block.selected = false);\r\n\r\n /**\r\n * restore selection when Block is already selected\r\n * but someone tries to write something.\r\n */\r\n if (restoreSelection) {\r\n this.selection.restore();\r\n }\r\n }\r\n\r\n /**\r\n * First CMD+A Selects current focused blocks,\r\n * and consequent second CMD+A keypress selects all blocks\r\n *\r\n * @param {keydown} event\r\n */\r\n private handleCommandA(event): void {\r\n /** Prevent default selection */\r\n event.preventDefault();\r\n\r\n if (this.needToSelectAll) {\r\n this.selectAllBlocks();\r\n this.needToSelectAll = false;\r\n } else {\r\n this.selectBlockByIndex();\r\n this.needToSelectAll = true;\r\n }\r\n }\r\n\r\n /**\r\n * Copying selected blocks\r\n * Before putting to the clipboard we sanitize all blocks and then copy to the clipboard\r\n *\r\n * @param event\r\n */\r\n private handleCommandC(event): void {\r\n const { BlockManager, Sanitizer } = this.Editor;\r\n const anyBlockSelected = BlockManager.blocks.some( (block) => block.selected === true);\r\n\r\n if (!anyBlockSelected) {\r\n return;\r\n }\r\n\r\n const fakeClipboard = $.make('div');\r\n\r\n BlockManager.blocks.filter( (block) => block.selected )\r\n .forEach( (block) => {\r\n /**\r\n * Make <p> tag that holds clean HTML\r\n */\r\n const cleanHTML = Sanitizer.clean(block.holder.innerHTML, this.sanitizerConfig);\r\n const fragment = $.make('p');\r\n\r\n fragment.innerHTML = cleanHTML;\r\n fakeClipboard.appendChild(fragment);\r\n });\r\n\r\n _.copyTextToClipboard(fakeClipboard.innerHTML);\r\n }\r\n\r\n /**\r\n * Select All Blocks\r\n * Each Block has selected setter that makes Block copyable\r\n */\r\n private selectAllBlocks() {\r\n const { BlockManager } = this.Editor;\r\n\r\n BlockManager.blocks.forEach( (block) => block.selected = true);\r\n }\r\n\r\n /**\r\n * select Block\r\n * @param {number?} index - Block index according to the BlockManager's indexes\r\n */\r\n private selectBlockByIndex(index?) {\r\n const { BlockManager } = this.Editor;\r\n\r\n /**\r\n * Remove previous focused Block's state\r\n */\r\n BlockManager.clearFocused();\r\n\r\n let block;\r\n\r\n if (isNaN(index)) {\r\n block = BlockManager.currentBlock;\r\n } else {\r\n block = BlockManager.getBlockByIndex(index);\r\n }\r\n\r\n /** Save selection */\r\n this.selection.save();\r\n SelectionUtils.get()\r\n .removeAllRanges();\r\n\r\n block.selected = true;\r\n }\r\n\r\n /**\r\n * Sanitizer Config\r\n * @return {SanitizerConfig}\r\n */\r\n private get sanitizerConfig() {\r\n return {\r\n p: {},\r\n h1: {},\r\n h2: {},\r\n h3: {},\r\n h4: {},\r\n h5: {},\r\n h6: {},\r\n ol: {},\r\n ul: {},\r\n li: {},\r\n br: true,\r\n img: {\r\n src: true,\r\n width: true,\r\n height: true,\r\n },\r\n a: {\r\n href: true,\r\n },\r\n b: {},\r\n i: {},\r\n u: {},\r\n };\r\n }\r\n}\r\n","/**\n * @class Caret\n * @classdesc Contains methods for working Caret\n *\n * Uses Range methods to manipulate with caret\n *\n * @module Caret\n *\n * @version 2.0.0\n */\n\nimport Selection from '../selection';\nimport Module from '../__module';\nimport Block from '../block';\nimport $ from '../dom';\nimport _ from '../utils';\n\n/**\n * @typedef {Caret} Caret\n */\nexport default class Caret extends Module {\n\n /**\n * Allowed caret positions in input\n *\n * @static\n * @returns {{START: string, END: string, DEFAULT: string}}\n */\n public static get positions(): {START: string, END: string, DEFAULT: string} {\n return {\n START: 'start',\n END: 'end',\n DEFAULT: 'default',\n };\n }\n\n /**\n * Elements styles that can be useful for Caret Module\n */\n private static get CSS(): {shadowCaret: string} {\n return {\n shadowCaret: 'cdx-shadow-caret',\n };\n }\n\n /**\n * Get's deepest first node and checks if offset is zero\n * @return {boolean}\n */\n public get isAtStart(): boolean {\n /**\n * Don't handle ranges\n */\n if (!Selection.isCollapsed) {\n return false;\n }\n\n const selection = Selection.get(),\n anchorNode = selection.anchorNode,\n firstNode = $.getDeepestNode(this.Editor.BlockManager.currentBlock.currentInput);\n\n /** In case lastNode is native input */\n if ($.isNativeInput(firstNode)) {\n return (firstNode as HTMLInputElement).selectionEnd === 0;\n }\n\n /**\n * Workaround case when caret in the text like \" |Hello!\"\n * selection.anchorOffset is 1, but real caret visible position is 0\n * @type {number}\n */\n let firstLetterPosition = anchorNode.textContent.search(/\\S/);\n\n if (firstLetterPosition === -1) { // empty text\n firstLetterPosition = 0;\n }\n\n /**\n * In case of\n * <div contenteditable>\n * <p><b></b></p> <-- first (and deepest) node is <b></b>\n * |adaddad <-- anchor node\n * </div>\n */\n if ($.isEmpty(firstNode)) {\n const leftSiblings = this.getHigherLevelSiblings(anchorNode as HTMLElement, 'left'),\n nothingAtLeft = leftSiblings.every( (node) => $.isEmpty(node) );\n\n if (nothingAtLeft && selection.anchorOffset === firstLetterPosition) {\n return true;\n }\n }\n\n /**\n * We use <= comparison for case:\n * \"| Hello\" <--- selection.anchorOffset is 0, but firstLetterPosition is 1\n */\n return firstNode === null || anchorNode === firstNode && selection.anchorOffset <= firstLetterPosition;\n }\n\n /**\n * Get's deepest last node and checks if offset is last node text length\n * @return {boolean}\n */\n public get isAtEnd(): boolean {\n /**\n * Don't handle ranges\n */\n if (!Selection.isCollapsed) {\n return false;\n }\n\n const selection = Selection.get(),\n anchorNode = selection.anchorNode,\n lastNode = $.getDeepestNode(this.Editor.BlockManager.currentBlock.currentInput, true);\n\n /** In case lastNode is native input */\n if ($.isNativeInput(lastNode)) {\n return (lastNode as HTMLInputElement).selectionEnd === (lastNode as HTMLInputElement).value.length;\n }\n\n /**\n * In case of\n * <div contenteditable>\n * adaddad| <-- anchor node\n * <p><b></b></p> <-- first (and deepest) node is <b></b>\n * </div>\n */\n if ($.isEmpty(lastNode)) {\n const leftSiblings = this.getHigherLevelSiblings(anchorNode as HTMLElement, 'right'),\n nothingAtRight = leftSiblings.every( (node) => $.isEmpty(node) );\n\n if (nothingAtRight && selection.anchorOffset === anchorNode.textContent.length) {\n return true;\n }\n }\n\n /**\n * Workaround case:\n * hello | <--- anchorOffset will be 5, but textContent.length will be 6.\n * Why not regular .trim():\n * in case of ' hello |' trim() will also remove space at the beginning, so length will be lower than anchorOffset\n */\n const rightTrimmedText = lastNode.textContent.replace(/\\s+$/, '');\n\n /**\n * We use >= comparison for case:\n * \"Hello |\" <--- selection.anchorOffset is 7, but rightTrimmedText is 6\n */\n return anchorNode === lastNode && selection.anchorOffset >= rightTrimmedText.length;\n }\n\n /**\n * Method gets Block instance and puts caret to the text node with offset\n * There two ways that method applies caret position:\n * - first found text node: sets at the beginning, but you can pass an offset\n * - last found text node: sets at the end of the node. Also, you can customize the behaviour\n *\n * @param {Block} block - Block class\n * @param {String} position - position where to set caret.\n * If default - leave default behaviour and apply offset if it's passed\n * @param {Number} offset - caret offset regarding to the text node\n */\n public setToBlock(block: Block, position: string = Caret.positions.DEFAULT, offset: number = 0): void {\n const {BlockManager} = this.Editor;\n let element;\n\n switch (position) {\n case Caret.positions.START:\n element = block.firstInput;\n break;\n case Caret.positions.END:\n element = block.lastInput;\n break;\n default:\n element = block.currentInput;\n }\n\n if (!element) {\n return;\n }\n\n const nodeToSet = $.getDeepestNode(element, position === Caret.positions.END);\n const contentLength = $.getContentLength(nodeToSet);\n\n switch (true) {\n case position === Caret.positions.START:\n offset = 0;\n break;\n case position === Caret.positions.END:\n case offset > contentLength:\n offset = contentLength;\n break;\n }\n\n /**\n * @todo try to fix via Promises or use querySelectorAll to not to use timeout\n */\n _.delay( () => {\n this.set(nodeToSet as HTMLElement, offset);\n }, 20)();\n\n BlockManager.setCurrentBlockByChildNode(block.holder);\n BlockManager.currentBlock.currentInput = element;\n }\n\n /**\n * Set caret to the current input of current Block.\n *\n * @param {HTMLElement} input - input where caret should be set\n * @param {String} position - position of the caret.\n * If default - leave default behaviour and apply offset if it's passed\n * @param {number} offset - caret offset regarding to the text node\n */\n public setToInput(input: HTMLElement, position: string = Caret.positions.DEFAULT, offset: number = 0): void {\n const {currentBlock} = this.Editor.BlockManager;\n const nodeToSet = $.getDeepestNode(input);\n\n switch (position) {\n case Caret.positions.START:\n this.set(nodeToSet as HTMLElement, 0);\n break;\n\n case Caret.positions.END:\n const contentLength = $.getContentLength(nodeToSet);\n\n this.set(nodeToSet as HTMLElement, contentLength);\n break;\n\n default:\n if (offset) {\n this.set(nodeToSet as HTMLElement, offset);\n }\n }\n\n currentBlock.currentInput = input;\n }\n\n /**\n * Creates Document Range and sets caret to the element with offset\n * @param {HTMLElement} element - target node.\n * @param {Number} offset - offset\n */\n public set(element: HTMLElement, offset: number = 0): void {\n const range = document.createRange(),\n selection = Selection.get();\n\n /** if found deepest node is native input */\n if ($.isNativeInput(element)) {\n element.focus();\n (element as HTMLInputElement).selectionStart = (element as HTMLInputElement).selectionEnd = offset;\n return;\n }\n\n range.setStart(element, offset);\n range.setEnd(element, offset);\n\n selection.removeAllRanges();\n selection.addRange(range);\n\n /** If new cursor position is not visible, scroll to it */\n const {top, bottom} = range.getBoundingClientRect();\n const {innerHeight} = window;\n\n if (top < 0) { window.scrollBy(0, top); }\n if (bottom > innerHeight) { window.scrollBy(0, bottom - innerHeight); }\n }\n /**\n * Set Caret to the last Block\n * If last block is not empty, append another empty block\n */\n public setToTheLastBlock(): void {\n const lastBlock = this.Editor.BlockManager.lastBlock;\n\n if (!lastBlock) {\n return;\n }\n\n /**\n * If last block is empty and it is an initialBlock, set to that.\n * Otherwise, append new empty block and set to that\n */\n if (lastBlock.isEmpty) {\n this.setToBlock(lastBlock);\n } else {\n const newBlock = this.Editor.BlockManager.insertAtEnd();\n\n this.setToBlock(newBlock);\n }\n }\n\n /**\n * Extract content fragment of current Block from Caret position to the end of the Block\n */\n public extractFragmentFromCaretPosition(): void|DocumentFragment {\n const selection = Selection.get();\n\n if (selection.rangeCount) {\n const selectRange = selection.getRangeAt(0);\n const currentBlockInput = this.Editor.BlockManager.currentBlock.currentInput;\n\n selectRange.deleteContents();\n\n if (currentBlockInput) {\n const range = selectRange.cloneRange();\n\n range.selectNodeContents(currentBlockInput);\n range.setStart(selectRange.endContainer, selectRange.endOffset);\n return range.extractContents();\n }\n }\n }\n\n /**\n * Set's caret to the next Block or Tool`s input\n * Before moving caret, we should check if caret position is at the end of Plugins node\n * Using {@link Dom#getDeepestNode} to get a last node and match with current selection\n *\n * @param {Boolean} force - force navigation even if caret is not at the end\n *\n * @return {Boolean}\n */\n public navigateNext(force: boolean = false): boolean {\n const {currentBlock, nextContentfulBlock} = this.Editor.BlockManager;\n const {nextInput} = currentBlock;\n\n if (!nextContentfulBlock && !nextInput) {\n return false;\n }\n\n if (force) {\n this.setToBlock(nextContentfulBlock, Caret.positions.START);\n return true;\n }\n\n if (this.isAtEnd) {\n /** If next Tool`s input exists, focus on it. Otherwise set caret to the next Block */\n if (!nextInput) {\n this.setToBlock(nextContentfulBlock, Caret.positions.START);\n } else {\n this.setToInput(nextInput, Caret.positions.START);\n }\n\n return true;\n }\n\n return false;\n }\n\n /**\n * Set's caret to the previous Tool`s input or Block\n * Before moving caret, we should check if caret position is start of the Plugins node\n * Using {@link Dom#getDeepestNode} to get a last node and match with current selection\n *\n * @param {Boolean} force - force navigation even if caret is not at the start\n *\n * @return {Boolean}\n */\n public navigatePrevious(force: boolean = false): boolean {\n const {currentBlock, previousContentfulBlock} = this.Editor.BlockManager;\n\n if (!currentBlock) {\n return false;\n }\n\n const {previousInput} = currentBlock;\n\n if (!previousContentfulBlock && !previousInput) {\n return false;\n }\n\n if (force) {\n this.setToBlock( previousContentfulBlock, Caret.positions.END );\n }\n\n if (this.isAtStart) {\n /** If previous Tool`s input exists, focus on it. Otherwise set caret to the previous Block */\n if (!previousInput) {\n this.setToBlock( previousContentfulBlock, Caret.positions.END );\n } else {\n this.setToInput(previousInput, Caret.positions.END);\n }\n return true;\n }\n\n return false;\n }\n\n /**\n * Inserts shadow element after passed element where caret can be placed\n * @param {Node} element\n */\n public createShadow(element): void {\n const shadowCaret = document.createElement('span');\n\n shadowCaret.classList.add(Caret.CSS.shadowCaret);\n element.insertAdjacentElement('beforeEnd', shadowCaret);\n }\n\n /**\n * Restores caret position\n * @param {HTMLElement} element\n */\n public restoreCaret(element: HTMLElement): void {\n const shadowCaret = element.querySelector(`.${Caret.CSS.shadowCaret}`);\n\n if (!shadowCaret) {\n return;\n }\n\n /**\n * After we set the caret to the required place\n * we need to clear shadow caret\n *\n * - make new range\n * - select shadowed span\n * - use extractContent to remove it from DOM\n */\n const sel = new Selection();\n\n sel.expandToTag(shadowCaret as HTMLElement);\n\n setTimeout(() => {\n const newRange = document.createRange();\n\n newRange.selectNode(shadowCaret);\n newRange.extractContents();\n }, 50);\n }\n\n /**\n * Get all first-level (first child of [contenteditabel]) siblings from passed node\n * Then you can check it for emptiness\n *\n * @example\n * <div contenteditable>\n * <p></p> |\n * <p></p> | left first-level siblings\n * <p></p> |\n * <blockquote><a><b>adaddad</b><a><blockquote> <-- passed node for example <b>\n * <p></p> |\n * <p></p> | right first-level siblings\n * <p></p> |\n * </div>\n *\n * @return {Element[]}\n */\n private getHigherLevelSiblings(from: HTMLElement, direction?: string): HTMLElement[] {\n let current = from;\n const siblings = [];\n\n /**\n * Find passed node's firs-level parent (in example - blockquote)\n */\n while (current.parentNode && (current.parentNode as HTMLElement).contentEditable !== 'true') {\n current = current.parentNode as HTMLElement;\n }\n\n const sibling = direction === 'left' ? 'previousSibling' : 'nextSibling';\n\n /**\n * Find all left/right siblings\n */\n while (current[sibling]) {\n current = current[sibling] as HTMLElement;\n siblings.push(current);\n }\n\n return siblings;\n }\n}\n","import SelectionUtils from '../selection';\r\n\r\nimport Module from '../__module';\r\nimport Caret from './caret';\r\n\r\nexport default class DragNDrop extends Module {\r\n\r\n /**\r\n * If drag has been started at editor, we save it\r\n *\r\n * @type Boolean\r\n * @private\r\n */\r\n private isStartedAtEditor = false;\r\n\r\n /**\r\n * Bind events\r\n *\r\n * @private\r\n */\r\n public prepare(): void {\r\n this.bindEvents();\r\n }\r\n\r\n /**\r\n * Add drag events listeners to editor zone\r\n * @private\r\n */\r\n private bindEvents(): void {\r\n this.Editor.Listeners.on(this.Editor.UI.nodes.holder, 'drop', this.processDrop, true);\r\n\r\n this.Editor.Listeners.on(this.Editor.UI.nodes.holder, 'dragstart', (dragEvent: DragEvent) => {\r\n\r\n if (SelectionUtils.isAtEditor && !SelectionUtils.isCollapsed) {\r\n this.isStartedAtEditor = true;\r\n }\r\n\r\n this.Editor.InlineToolbar.close();\r\n });\r\n\r\n /* Prevent default browser behavior to allow drop on non-contenteditable elements */\r\n this.Editor.Listeners.on(this.Editor.UI.nodes.holder, 'dragover', (e) => e.preventDefault(), true);\r\n }\r\n\r\n /**\r\n * Handle drop event\r\n *\r\n * @param {DragEvent} dropEvent\r\n */\r\n private processDrop = async (dropEvent: DragEvent): Promise<void> => {\r\n const {\r\n BlockManager,\r\n Paste,\r\n } = this.Editor;\r\n\r\n dropEvent.preventDefault();\r\n\r\n BlockManager.blocks.forEach((block) => block.dropTarget = false);\r\n\r\n if (SelectionUtils.isAtEditor && !SelectionUtils.isCollapsed && this.isStartedAtEditor) {\r\n document.execCommand('delete');\r\n }\r\n\r\n this.isStartedAtEditor = false;\r\n\r\n /**\r\n * Try to set current block by drop target.\r\n * If drop target (error will be thrown) is not part of the Block, set last Block as current.\r\n */\r\n try {\r\n BlockManager.setCurrentBlockByChildNode(dropEvent.target as Node, Caret.positions.END);\r\n } catch (e) {\r\n BlockManager.setCurrentBlockByChildNode(BlockManager.lastBlock.holder, Caret.positions.END);\r\n }\r\n\r\n Paste.processDataTransfer(dropEvent.dataTransfer, true);\r\n }\r\n}\r\n","import Module from '../__module';\r\n\r\n/**\r\n * @module eventDispatcher\r\n *\r\n * Has two important methods:\r\n * - {Function} on - appends subscriber to the event. If event doesn't exist - creates new one\r\n * - {Function} emit - fires all subscribers with data\r\n * - {Function off - unsubsribes callback\r\n *\r\n * @version 1.0.0\r\n *\r\n * @typedef {Events} Events\r\n * @property {Object} subscribers - all subscribers grouped by event name\r\n */\r\nexport default class Events extends Module {\r\n\r\n /**\r\n * Object with events` names as key and array of callback functions as value\r\n * @type {{}}\r\n */\r\n private subscribers: {[name: string]: Array<(data?: any) => void>} = {};\r\n\r\n /**\r\n * Subscribe any event on callback\r\n *\r\n * @param {String} eventName - event name\r\n * @param {Function} callback - subscriber\r\n */\r\n public on(eventName: string, callback: (data: any) => void) {\r\n if (!(eventName in this.subscribers)) {\r\n this.subscribers[eventName] = [];\r\n }\r\n\r\n // group by events\r\n this.subscribers[eventName].push(callback);\r\n }\r\n\r\n /**\r\n * Emit callbacks with passed data\r\n *\r\n * @param {String} eventName - event name\r\n * @param {Object} data - subscribers get this data when they were fired\r\n */\r\n public emit(eventName: string, data?: any): void {\r\n if (!this.subscribers[eventName]) {\r\n return;\r\n }\r\n\r\n this.subscribers[eventName].reduce((previousData, currentHandler) => {\r\n const newData = currentHandler(previousData);\r\n\r\n return newData ? newData : previousData;\r\n }, data);\r\n }\r\n\r\n /**\r\n * Unsubsribe callback from event\r\n *\r\n * @param eventName\r\n * @param callback\r\n */\r\n public off(eventName: string, callback: (data: any) => void): void {\r\n for (let i = 0; i < this.subscribers[eventName].length; i++) {\r\n if (this.subscribers[eventName][i] === callback) {\r\n delete this.subscribers[eventName][i];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Destroyer\r\n * clears subsribers list\r\n */\r\n public destroy(): void {\r\n this.subscribers = null;\r\n }\r\n}\r\n","import Module from '../__module';\r\nimport {EditorConfig} from '../../../types';\r\n\r\n/**\r\n * Event listener information\r\n */\r\nexport interface ListenerData {\r\n /**\r\n * Element where to listen to dispatched events\r\n */\r\n element: EventTarget;\r\n\r\n /**\r\n * Event to listen\r\n */\r\n eventType: string;\r\n\r\n /**\r\n * Event handler\r\n *\r\n * @param {Event} event\r\n */\r\n handler: (event: Event) => void;\r\n\r\n /**\r\n * Should event bubbling be used or not\r\n */\r\n useCapture: boolean;\r\n}\r\n\r\n/**\r\n * Codex Editor Listeners module\r\n *\r\n * @module Listeners\r\n *\r\n * Module-decorator for event listeners assignment\r\n *\r\n * @author Codex Team\r\n * @version 2.0.0\r\n */\r\n\r\n/**\r\n * @typedef {Listeners} Listeners\r\n * @property {Array} allListeners\r\n */\r\nexport default class Listeners extends Module {\r\n\r\n /**\r\n * Stores all listeners data to find/remove/process it\r\n * @type {ListenerData[]}\r\n */\r\n private allListeners: ListenerData[] = [];\r\n\r\n /**\r\n * Assigns event listener on element\r\n *\r\n * @param {EventTarget} element - DOM element that needs to be listened\r\n * @param {String} eventType - event type\r\n * @param {Function} handler - method that will be fired on event\r\n * @param {Boolean} useCapture - use event bubbling\r\n */\r\n public on(\r\n element: EventTarget,\r\n eventType: string,\r\n handler: (event: Event) => void,\r\n useCapture: boolean = false,\r\n ): void {\r\n const assignedEventData = {\r\n element,\r\n eventType,\r\n handler,\r\n useCapture,\r\n };\r\n\r\n const alreadyExist = this.findOne(element, eventType, handler);\r\n\r\n if (alreadyExist) { return; }\r\n\r\n this.allListeners.push(assignedEventData);\r\n element.addEventListener(eventType, handler, useCapture);\r\n }\r\n\r\n /**\r\n * Removes event listener from element\r\n *\r\n * @param {EventTarget} element - DOM element that we removing listener\r\n * @param {String} eventType - event type\r\n * @param {Function} handler - remove handler, if element listens several handlers on the same event type\r\n * @param {Boolean} useCapture - use event bubbling\r\n */\r\n public off(\r\n element: EventTarget,\r\n eventType: string,\r\n handler: (event: Event) => void,\r\n useCapture: boolean = false,\r\n ): void {\r\n const existingListeners = this.findAll(element, eventType, handler);\r\n\r\n existingListeners.forEach((listener, i) => {\r\n const index = this.allListeners.indexOf(existingListeners[i]);\r\n\r\n if (index > 0) {\r\n this.allListeners.splice(index, 1);\r\n }\r\n });\r\n\r\n element.removeEventListener(eventType, handler, useCapture);\r\n }\r\n\r\n /**\r\n * @param {EventTarget} element\r\n * @param {String} eventType\r\n * @param {Function} handler\r\n * @return {EventTarget|null}\r\n */\r\n public findOne(element: EventTarget, eventType: string, handler: (event: Event) => void): ListenerData {\r\n const foundListeners = this.findAll(element, eventType, handler);\r\n\r\n return foundListeners.length > 0 ? foundListeners[0] : null;\r\n }\r\n\r\n /**\r\n * @param {EventTarget} element\r\n * @param {String} eventType\r\n * @param {Function} handler\r\n * @return {Array}\r\n */\r\n public findAll(element: EventTarget, eventType: string, handler: (event: Event) => void): ListenerData[] {\r\n let found;\r\n const foundByEventTargets = element ? this.findByEventTarget(element) : [];\r\n\r\n if (element && eventType && handler) {\r\n found = foundByEventTargets.filter( (event) => event.eventType === eventType && event.handler === handler );\r\n } else if (element && eventType) {\r\n found = foundByEventTargets.filter( (event) => event.eventType === eventType);\r\n } else {\r\n found = foundByEventTargets;\r\n }\r\n\r\n return found;\r\n }\r\n\r\n /**\r\n * Removes all listeners\r\n */\r\n public removeAll(): void {\r\n this.allListeners.map( (current) => {\r\n current.element.removeEventListener(current.eventType, current.handler);\r\n });\r\n\r\n this.allListeners = [];\r\n }\r\n\r\n /**\r\n * Search method: looks for listener by passed element\r\n * @param {EventTarget} element - searching element\r\n * @returns {Array} listeners that found on element\r\n */\r\n private findByEventTarget(element: EventTarget): ListenerData[] {\r\n return this.allListeners.filter((listener) => {\r\n if (listener.element === element) {\r\n return listener;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Search method: looks for listener by passed event type\r\n * @param {String} eventType\r\n * @return {Array} listeners that found on element\r\n */\r\n private findByType(eventType: string): ListenerData[] {\r\n return this.allListeners.filter((listener) => {\r\n if (listener.eventType === eventType) {\r\n return listener;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Search method: looks for listener by passed handler\r\n * @param {Function} handler\r\n * @return {Array} listeners that found on element\r\n */\r\n private findByHandler(handler: (event: Event) => void): ListenerData[] {\r\n return this.allListeners.filter((listener) => {\r\n if (listener.handler === handler) {\r\n return listener;\r\n }\r\n });\r\n }\r\n}\r\n","/**\n * @module ModificationsObserver\n *\n * Handles any mutations\n * and gives opportunity to handle outside\n */\n\nimport Module from '../__module';\nimport _ from '../utils';\n\nexport default class ModificationsObserver extends Module {\n\n /**\n * Debounce Timer\n * @type {number}\n */\n public static readonly DebounceTimer = 450;\n\n /**\n * Used to prevent several mutation callback execution\n * @type {Function}\n */\n private mutationDebouncer = _.debounce( () => {\n this.config.onChange();\n }, ModificationsObserver.DebounceTimer);\n\n /**\n * Clear timeout and set null to mutationDebouncer property\n */\n public destroy() {\n this.mutationDebouncer = null;\n }\n\n /**\n * Preparation method\n * @return {Promise<void>}\n */\n public async prepare(): Promise<void> {\n /**\n * wait till Browser render Editor's Blocks\n */\n window.setTimeout( () => {\n this.setObserver();\n }, 1000);\n }\n\n /**\n * setObserver\n *\n * sets 'DOMSubtreeModified' listener on Editor's UI.nodes.redactor\n * so that User can handle outside from API\n */\n private setObserver(): void {\n const {Listeners, UI} = this.Editor;\n\n /**\n * Set Listener to the Editor <div> element that holds only Blocks\n */\n Listeners.on(UI.nodes.redactor, 'DOMSubtreeModified', () => {\n this.mutationDebouncer();\n }, false);\n }\n}\n","import Module from '../__module';\r\n\r\n/**\r\n * Use external package module for notifications\r\n *\r\n * @see https://github.com/codex-team/js-notifier\r\n */\r\nimport notifier, {ConfirmNotifierOptions, NotifierOptions, PromptNotifierOptions} from 'codex-notifier';\r\n\r\n/**\r\n * Notifier module\r\n */\r\nexport default class Notifier extends Module {\r\n\r\n /**\r\n * Show web notification\r\n *\r\n * @param {NotifierOptions | ConfirmNotifierOptions | PromptNotifierOptions} options\r\n */\r\n public show(options: NotifierOptions | ConfirmNotifierOptions | PromptNotifierOptions) {\r\n notifier.show(options);\r\n }\r\n}\r\n","import CaretClass from './caret';\nimport SelectionUtils from '../selection';\n\nimport Module from '../__module';\nimport $ from '../dom';\nimport _ from '../utils';\nimport {BlockToolData, PasteConfig} from '../../../types';\n\n/**\n * Tag substitute object.\n */\ninterface TagSubstitute {\n /**\n * Name of related Tool\n * @type {string}\n */\n tool: string;\n\n /**\n * Callback to handle pasted element\n *\n * @param {HTMLElement} element\n * @return {BlockToolData}\n */\n handler: (element: HTMLElement) => BlockToolData;\n}\n\n/**\n * Pattern substitute object.\n */\ninterface PatternSubstitute {\n /**\n * Pattern`s key\n * @type {string}\n */\n key: string;\n\n /**\n * Pattern regexp\n * @type {RegExp}\n */\n pattern: RegExp;\n\n /**\n * Callback to handle pasted pattern\n *\n * @param {string} text\n * @param {string} key\n * @return {BlockToolData}\n */\n handler: (text: string, key: string) => BlockToolData;\n\n /**\n * Name of related Tool\n * @type {string}\n */\n tool: string;\n}\n\n/**\n * Files` types substitutions object.\n */\ninterface FilesSubstitution {\n /**\n * Array of file extensions Tool can handle\n * @type {string[]}\n */\n extensions: string[];\n\n /**\n * Array of MIME types Tool can handle\n * @type {string[]}\n */\n mimeTypes: string[];\n\n /**\n * Callback to handle pasted File\n *\n * @param {File} file\n * @return {BlockToolData}\n */\n handler: (file: File) => BlockToolData;\n}\n\n/**\n * Processed paste data object.\n */\ninterface PasteData {\n /**\n * Name of related Tool\n * @type {string}\n */\n tool: string;\n\n /**\n * Pasted data. Processed and wrapped to HTML element\n * @type {HTMLElement}\n */\n content: HTMLElement;\n\n /**\n * True if content should be inserted as new Block\n * @type {boolean}\n */\n isBlock: boolean;\n\n /**\n * Callback that returns pasted data in BlockToolData format\n *\n * @param {HTMLElement | string} content\n * @param {RegExp} patten\n * @return {BlockToolData}\n */\n handler: (content: HTMLElement|string, patten?: RegExp) => BlockToolData;\n}\n\n/**\n * @class Paste\n * @classdesc Contains methods to handle paste on editor\n *\n * @module Paste\n *\n * @version 2.0.0\n */\nexport default class Paste extends Module {\n\n /** If string`s length is greater than this number we don't check paste patterns */\n public static readonly PATTERN_PROCESSING_MAX_LENGTH = 450;\n\n /**\n * Tags` substitutions parameters\n */\n private toolsTags: {[tag: string]: TagSubstitute} = {};\n\n /**\n * Store tags to substitute by tool name\n */\n private tagsByTool: {[tools: string]: string[]} = {};\n\n /** Patterns` substitutions parameters */\n private toolsPatterns: PatternSubstitute[] = [];\n\n /** Files` substitutions parameters */\n private toolsFiles: {\n [tool: string]: FilesSubstitution,\n } = {};\n\n /**\n * Set onPaste callback and collect tools` paste configurations\n *\n * @public\n */\n public async prepare(): Promise<void> {\n this.setCallback();\n this.processTools();\n }\n\n /**\n * Handle pasted or dropped data transfer object\n *\n * @param {DataTransfer} dataTransfer - pasted or dropped data transfer object\n * @param {boolean} isDragNDrop\n */\n public async processDataTransfer(dataTransfer: DataTransfer, isDragNDrop = false): Promise<void> {\n const { Sanitizer } = this.Editor;\n\n if (dataTransfer.types.includes('Files')) {\n await this.processFiles(dataTransfer.items);\n return;\n }\n\n const plainData = dataTransfer.getData('text/plain');\n let htmlData = dataTransfer.getData('text/html');\n\n /**\n * If text was drag'n'dropped, wrap content with P tag to insert it as the new Block\n */\n if (isDragNDrop && plainData.trim() && htmlData.trim()) {\n htmlData = '<p>' + ( htmlData.trim() ? htmlData : plainData ) + '</p>';\n }\n\n /** Add all tags that can be substituted to sanitizer configuration */\n const toolsTags = Object.keys(this.toolsTags).reduce((result, tag) => {\n result[tag.toLowerCase()] = true;\n\n return result;\n }, {});\n\n const customConfig = Object.assign({}, toolsTags, Sanitizer.getAllInlineToolsConfig());\n\n const cleanData = Sanitizer.clean(htmlData, customConfig);\n\n /** If there is no HTML or HTML string is equal to plain one, process it as plain text */\n if (!cleanData.trim() || cleanData.trim() === plainData || !$.isHTMLString(cleanData)) {\n await this.processText(plainData);\n } else {\n await this.processText(cleanData, true);\n }\n }\n\n /**\n * Set onPaste callback handler\n */\n private setCallback(): void {\n const {Listeners, UI} = this.Editor;\n\n Listeners.on(UI.nodes.redactor, 'paste', this.handlePasteEvent);\n }\n\n /**\n * Get and process tool`s paste configs\n */\n private processTools(): void {\n const tools = this.Editor.Tools.blockTools;\n\n Object.entries(tools).forEach(this.processTool);\n }\n\n /**\n * Process paste config for each tool\n *\n * @param {string} name\n * @param {Tool} tool\n */\n private processTool = ([name, tool]) => {\n try {\n const toolPasteConfig = tool.onPaste || {};\n\n this.getTagsConfig(name, toolPasteConfig);\n this.getFilesConfig(name, toolPasteConfig);\n this.getPatternsConfig(name, toolPasteConfig);\n } catch (e) {\n _.log(\n `Paste handling for «${name}» Tool hasn't been set up because of the error`,\n 'warn',\n e,\n );\n }\n }\n\n /**\n * Get tags to substitute by Tool\n *\n * @param {string} name - Tool name\n * @param {PasteConfig} toolPasteConfig - Tool onPaste configuration\n */\n private getTagsConfig(name: string, toolPasteConfig: PasteConfig): void {\n if (this.config.initialBlock === name && !toolPasteConfig.handler) {\n _.log(\n `«${name}» Tool must provide a paste handler.`,\n 'warn',\n );\n }\n\n if (!toolPasteConfig.handler) {\n return;\n }\n\n if (typeof toolPasteConfig.handler !== 'function') {\n _.log(\n `Paste handler for «${name}» Tool should be a function.`,\n 'warn',\n );\n\n return;\n }\n\n const tags = toolPasteConfig.tags || [];\n\n tags.forEach((tag) => {\n if (this.toolsTags.hasOwnProperty(tag)) {\n _.log(\n `Paste handler for «${name}» Tool on «${tag}» tag is skipped ` +\n `because it is already used by «${this.toolsTags[tag].tool}» Tool.`,\n 'warn',\n );\n return;\n }\n\n this.toolsTags[tag.toUpperCase()] = {\n handler: toolPasteConfig.handler,\n tool: name,\n };\n });\n\n this.tagsByTool[name] = tags.map((t) => t.toUpperCase());\n }\n\n /**\n * Get files` types and extensions to substitute by Tool\n *\n * @param {string} name - Tool name\n * @param {PasteConfig} toolPasteConfig - Tool onPaste configuration\n */\n private getFilesConfig(name: string, toolPasteConfig: PasteConfig): void {\n\n const {fileHandler, files = {}} = toolPasteConfig;\n let {extensions, mimeTypes} = files;\n\n if (!fileHandler || (!extensions && !mimeTypes)) {\n return;\n }\n\n if (typeof fileHandler !== 'function') {\n _.log(`Drop handler for «${name}» Tool should be a function.`);\n return;\n }\n\n if (extensions && !Array.isArray(extensions)) {\n _.log(`«extensions» property of the onDrop config for «${name}» Tool should be an array`);\n extensions = [];\n }\n\n if (mimeTypes && !Array.isArray(mimeTypes)) {\n _.log(`«mimeTypes» property of the onDrop config for «${name}» Tool should be an array`);\n mimeTypes = [];\n }\n\n if (mimeTypes) {\n mimeTypes = mimeTypes.filter((type) => {\n if (!_.isValidMimeType(type)) {\n _.log(`MIME type value «${type}» for the «${name}» Tool is not a valid MIME type`, 'warn');\n return false;\n }\n\n return true;\n });\n }\n\n this.toolsFiles[name] = {\n extensions: extensions || [],\n mimeTypes: mimeTypes || [],\n handler: fileHandler,\n };\n }\n\n /**\n * Get RegExp patterns to substitute by Tool\n *\n * @param {string} name - Tool name\n * @param {PasteConfig} toolPasteConfig - Tool onPaste configuration\n */\n private getPatternsConfig(name: string, toolPasteConfig: PasteConfig): void {\n if (!toolPasteConfig.patternHandler || _.isEmpty(toolPasteConfig.patterns)) {\n return;\n }\n\n if (typeof toolPasteConfig.patternHandler !== 'function') {\n _.log(\n `Pattern parser for «${name}» Tool should be a function.`,\n 'warn',\n );\n\n return;\n }\n\n Object.entries(toolPasteConfig.patterns).forEach(([key, pattern]: [string, RegExp]) => {\n /** Still need to validate pattern as it provided by user */\n if (!(pattern instanceof RegExp)) {\n _.log(\n `Pattern ${pattern} for «${name}» Tool is skipped because it should be a Regexp instance.`,\n 'warn',\n );\n }\n\n this.toolsPatterns.push({\n key,\n pattern,\n handler: toolPasteConfig.patternHandler,\n tool: name,\n });\n });\n }\n\n /**\n * Check if browser behavior suits better\n *\n * @param {EventTarget} element - element where content has been pasted\n * @returns {boolean}\n */\n private isNativeBehaviour(element: EventTarget): boolean {\n const {Editor: {BlockManager}} = this;\n\n if ( $.isNativeInput(element) ) {\n return true;\n }\n\n const block = BlockManager.getBlock(element as HTMLElement);\n\n return !block;\n }\n\n /**\n * Check if Editor should process pasted data and pass data transfer object to handler\n *\n * @param {ClipboardEvent} event\n */\n private handlePasteEvent = async (event: ClipboardEvent): Promise<void> => {\n /** If target is native input or is not Block, use browser behaviour */\n if (\n this.isNativeBehaviour(event.target) && !event.clipboardData.types.includes('Files')\n ) {\n return;\n }\n\n event.preventDefault();\n this.processDataTransfer(event.clipboardData);\n }\n\n /**\n * Get files from data transfer object and insert related Tools\n *\n * @param {DataTransferItemList} items - pasted or dropped items\n */\n private async processFiles(items: DataTransferItemList) {\n const {BlockManager} = this.Editor;\n\n let dataToInsert: Array<{type: string, data: BlockToolData}>;\n\n dataToInsert = await Promise.all(\n Array\n .from(items)\n .map((item) => this.processFile(item)),\n );\n dataToInsert = dataToInsert.filter((data) => !!data);\n\n dataToInsert.forEach(\n (data, i) => {\n if (i === 0 && BlockManager.currentBlock && BlockManager.currentBlock.isEmpty) {\n BlockManager.replace(data.type, data.data);\n return;\n }\n\n BlockManager.insert(data.type, data.data);\n },\n );\n }\n\n /**\n * Get information about file and find Tool to handle it\n *\n * @param {DataTransferItem} item\n */\n private async processFile(item: DataTransferItem) {\n if (item.kind === 'string') {\n return;\n }\n\n const file = item.getAsFile();\n const extension = _.getFileExtension(file);\n\n const foundConfig = Object\n .entries(this.toolsFiles)\n .find(([toolName, {mimeTypes, extensions}]) => {\n const [fileType, fileSubtype] = file.type.split('/');\n\n const foundExt = extensions.find((ext) => ext.toLowerCase() === extension.toLowerCase());\n const foundMimeType = mimeTypes.find((mime) => {\n const [type, subtype] = mime.split('/');\n\n return type === fileType && (subtype === fileSubtype || subtype === '*');\n });\n\n return !!foundExt || !!foundMimeType;\n });\n\n if (!foundConfig) {\n return;\n }\n\n const [tool, {handler}] = foundConfig;\n return {\n data: await handler(file),\n type: tool,\n };\n }\n\n /**\n * Process pasted text and divide them into Blocks\n *\n * @param {string} data - text to process. Can be HTML or plain.\n * @param {boolean} isHTML - if passed string is HTML, this parameter should be true\n */\n private async processText(data: string, isHTML: boolean = false) {\n const {Caret, BlockManager} = this.Editor;\n const dataToInsert = isHTML ? this.processHTML(data) : this.processPlain(data);\n\n if (!dataToInsert.length) {\n return;\n }\n\n if (dataToInsert.length === 1 && !dataToInsert[0].isBlock) {\n this.processSingleBlock(dataToInsert.pop());\n return;\n }\n\n /**\n * If caret not at the end of of the Block and there is no selection,\n * we split the Block and insert content at the middle.\n */\n if (SelectionUtils.isAtEditor && !Caret.isAtEnd && SelectionUtils.isCollapsed) {\n this.splitBlock();\n }\n\n await Promise.all(dataToInsert.map(\n async (content, i) => await this.insertBlock(content, i === 0),\n ));\n\n Caret.setToBlock(BlockManager.currentBlock, CaretClass.positions.END);\n }\n\n /**\n * Split HTML string to blocks and return it as array of Block data\n *\n * @param {string} innerHTML\n * @returns {PasteData[]}\n */\n private processHTML(innerHTML: string): PasteData[] {\n const {Tools, Sanitizer} = this.Editor,\n initialTool = this.config.initialBlock,\n wrapper = $.make('DIV');\n\n wrapper.innerHTML = innerHTML;\n\n const nodes = this.getNodes(wrapper);\n\n return nodes\n .map((node) => {\n let content, tool = initialTool, isBlock = false;\n\n switch (node.nodeType) {\n /** If node is a document fragment, use temp wrapper to get innerHTML */\n case Node.DOCUMENT_FRAGMENT_NODE:\n content = $.make('div');\n content.appendChild(node);\n break;\n\n /** If node is an element, then there might be a substitution */\n case Node.ELEMENT_NODE:\n content = node as HTMLElement;\n isBlock = true;\n\n if (this.toolsTags[content.tagName]) {\n tool = this.toolsTags[content.tagName].tool;\n }\n break;\n }\n\n const {handler, tags} = Tools.blockTools[tool].onPaste;\n\n const toolTags = tags.reduce((result, tag) => {\n result[tag.toLowerCase()] = {};\n\n return result;\n }, {});\n const customConfig = Object.assign({}, toolTags, Sanitizer.getInlineToolsConfig(tool));\n\n content.innerHTML = Sanitizer.clean(content.innerHTML, customConfig);\n\n return {content, isBlock, handler, tool};\n })\n .filter((data) => !$.isNodeEmpty(data.content) || $.isSingleTag(data.content));\n }\n\n /**\n * Split plain text by new line symbols and return it as array of Block data\n *\n * @param {string} plain\n * @returns {PasteData[]}\n */\n private processPlain(plain: string): PasteData[] {\n const {initialBlock} = this.config as {initialBlock: string},\n {Tools} = this.Editor;\n\n if (!plain) {\n return [];\n }\n\n const tool = initialBlock,\n handler = Tools.blockTools[tool].onPaste.handler;\n\n return plain\n .split(/\\r?\\n/)\n .filter((text) => text.trim())\n .map((text) => {\n const content = $.make('div');\n\n content.innerHTML = text;\n\n return {content, tool, isBlock: false, handler};\n });\n }\n\n /**\n * Process paste to single Block:\n * 1. Find patterns` matches\n * 2. Insert new block if it is not the same type as current one\n * 3. Just insert text if there is no substitutions\n *\n * @param {PasteData} dataToInsert\n */\n private async processSingleBlock(dataToInsert: PasteData): Promise<void> {\n const initialTool = this.config.initialBlock,\n {BlockManager, Caret, Sanitizer} = this.Editor,\n {content, tool} = dataToInsert;\n\n if (tool === initialTool && content.textContent.length < Paste.PATTERN_PROCESSING_MAX_LENGTH) {\n const blockData = await this.processPattern(content.textContent);\n\n if (blockData) {\n this.splitBlock();\n let insertedBlock;\n\n const sanitizeConfig = Sanitizer.composeToolConfig(tool);\n\n if (!_.isEmpty(sanitizeConfig)) {\n blockData.data = Sanitizer.deepSanitize(blockData.data, sanitizeConfig);\n }\n\n if (BlockManager.currentBlock && BlockManager.currentBlock.isEmpty) {\n insertedBlock = BlockManager.replace(blockData.tool, blockData.data);\n } else {\n insertedBlock = BlockManager.insert(blockData.tool, blockData.data);\n }\n Caret.setToBlock(insertedBlock, CaretClass.positions.END);\n return;\n }\n }\n\n const currentToolSanitizeConfig = Sanitizer.getInlineToolsConfig(BlockManager.currentBlock.name);\n\n /** If there is no pattern substitute - insert string as it is */\n document.execCommand('insertHTML', false, Sanitizer.clean(content.innerHTML, currentToolSanitizeConfig));\n }\n\n /**\n * Get patterns` matches\n *\n * @param {string} text\n * @returns Promise<{data: BlockToolData, tool: string}>\n */\n private async processPattern(text: string): Promise<{data: BlockToolData, tool: string}> {\n const pattern = this.toolsPatterns.find((substitute) => {\n const execResult = substitute.pattern.exec(text);\n\n if (!execResult) {\n return false;\n }\n\n return text === execResult.shift();\n });\n\n const data = pattern && await pattern.handler(text, pattern.key);\n\n return data && {\n data,\n tool: pattern.tool,\n };\n }\n\n /**\n *\n * @param {PasteData} data\n * @param {Boolean} canReplaceCurrentBlock - if true and is current Block is empty, will replace current Block\n * @returns {Promise<void>}\n */\n private async insertBlock(data: PasteData, canReplaceCurrentBlock: boolean = false): Promise<void> {\n const blockData = await data.handler(data.content),\n {BlockManager, Caret} = this.Editor,\n {currentBlock} = BlockManager;\n\n if (canReplaceCurrentBlock && currentBlock && currentBlock.isEmpty) {\n BlockManager.replace(data.tool, blockData);\n return;\n }\n\n const block = BlockManager.insert(data.tool, blockData);\n\n Caret.setToBlock(block);\n }\n\n /**\n * Split current block if paste isn't in the end of the block\n */\n private splitBlock() {\n const {BlockManager, Caret} = this.Editor;\n\n if (!BlockManager.currentBlock) {\n return;\n }\n\n /** If we paste into middle of the current block:\n * 1. Split\n * 2. Navigate to the first part\n */\n if (!BlockManager.currentBlock.isEmpty && !Caret.isAtEnd) {\n BlockManager.split();\n BlockManager.currentBlockIndex--;\n }\n }\n\n /**\n * Recursively divide HTML string to two types of nodes:\n * 1. Block element\n * 2. Document Fragments contained text and markup tags like a, b, i etc.\n *\n * @param {Node} wrapper\n * @returns {Node[]}\n */\n private getNodes(wrapper: Node): Node[] {\n const children = Array.from(wrapper.childNodes),\n tags = Object.keys(this.toolsTags);\n\n const reducer = (nodes: Node[], node: Node): Node[] => {\n if ($.isEmpty(node) && !$.isSingleTag(node as HTMLElement)) {\n return nodes;\n }\n\n const lastNode = nodes[nodes.length - 1];\n\n let destNode: Node = new DocumentFragment();\n\n if (lastNode && $.isFragment(lastNode)) {\n destNode = nodes.pop();\n }\n\n switch (node.nodeType) {\n /**\n * If node is HTML element:\n * 1. Check if it is inline element\n * 2. Check if it contains another block or substitutable elements\n */\n case Node.ELEMENT_NODE:\n const element = node as HTMLElement;\n\n const {tool = ''} = this.toolsTags[element.tagName] || {};\n const toolTags = this.tagsByTool[tool] || [];\n\n const isSubstitutable = tags.includes(element.tagName);\n const isBlockElement = $.blockElements.includes(element.tagName.toLowerCase());\n const containsAnotherToolTags = Array\n .from(element.children)\n .some(\n ({tagName}) => tags.includes(tagName) && !toolTags.includes(tagName),\n );\n\n const containsBlockElements = Array.from(element.children).some(\n ({tagName}) => $.blockElements.includes(tagName.toLowerCase()),\n );\n\n /** Append inline elements to previous fragment */\n if (!isBlockElement && !isSubstitutable) {\n destNode.appendChild(element);\n return [...nodes, destNode];\n }\n\n if (\n (isSubstitutable && !containsAnotherToolTags) ||\n (isBlockElement && !containsBlockElements && !containsAnotherToolTags )\n ) {\n return [...nodes, destNode, element];\n }\n break;\n\n /**\n * If node is text node, wrap it with DocumentFragment\n */\n case Node.TEXT_NODE:\n destNode.appendChild(node);\n return [...nodes, destNode];\n\n default:\n return [...nodes, destNode];\n }\n\n return [...nodes, ...Array.from(node.childNodes).reduce(reducer, [])];\n };\n\n return children.reduce(reducer, []);\n }\n}\n","import Module from '../__module';\nimport _, {ChainData} from '../utils';\nimport {BlockToolData} from '../../../types';\n\n/**\n * Codex Editor Renderer Module\n *\n * @module Renderer\n * @author CodeX Team\n *\n * @version 2.0.0\n */\nexport default class Renderer extends Module {\n /**\n * @typedef {Object} RendererBlocks\n * @property {String} type - tool name\n * @property {Object} data - tool data\n */\n\n /**\n * @example\n *\n * blocks: [\n * {\n * type : 'paragraph',\n * data : {\n * text : 'Hello from Codex!'\n * }\n * },\n * {\n * type : 'paragraph',\n * data : {\n * text : 'Leave feedback if you like it!'\n * }\n * },\n * ]\n *\n */\n\n /**\n * Make plugin blocks from array of plugin`s data\n * @param {RendererBlocks[]} blocks\n */\n public render(blocks: BlockToolData[]): Promise<void> {\n const chainData = blocks.map((block) => ({function: () => this.insertBlock(block)}));\n\n return _.sequence(chainData as ChainData[]);\n }\n\n /**\n * Get plugin instance\n * Add plugin instance to BlockManager\n * Insert block to working zone\n *\n * @param {Object} item\n * @returns {Promise<void>}\n * @private\n */\n public async insertBlock(item): Promise<void> {\n const tool = item.type;\n const data = item.data;\n const settings = item.settings;\n\n if (tool in this.Editor.Tools.available) {\n try {\n this.Editor.BlockManager.insert(tool, data, settings);\n } catch (error) {\n _.log(`Block «${tool}» skipped because of plugins error`, 'warn', data);\n throw Error(error);\n }\n } else {\n /**\n * @todo show warning notification message\n *\n * `${tool} blocks was skipped.`\n */\n _.log(`Tool «${tool}» is not found. Check 'tools' property at your initial CodeX Editor config.`, 'warn');\n }\n }\n}\n","/**\n * CodeX Sanitizer\n *\n * @module Sanitizer\n * Clears HTML from taint tags\n *\n * @version 2.0.0\n *\n * @example\n * Module can be used within two ways:\n * 1) When you have an instance\n * - this.Editor.Sanitizer.clean(yourTaintString);\n * 2) As static method\n * - CodexEditor.Sanitizer.clean(yourTaintString, yourCustomConfiguration);\n *\n * {@link SanitizerConfig}\n */\n\nimport Module from '../__module';\nimport _ from '../utils';\n\n/**\n * @typedef {Object} SanitizerConfig\n * @property {Object} tags - define tags restrictions\n *\n * @example\n *\n * tags : {\n * p: true,\n * a: {\n * href: true,\n * rel: \"nofollow\",\n * target: \"_blank\"\n * }\n * }\n */\n\nimport HTMLJanitor from 'html-janitor';\nimport {BlockToolData, InlineToolConstructable, SanitizerConfig} from '../../../types';\n\nexport default class Sanitizer extends Module {\n /**\n * Memoize tools config\n */\n private configCache: {[toolName: string]: SanitizerConfig} = {};\n\n /**\n * Cached inline tools config\n */\n private inlineToolsConfigCache: SanitizerConfig | null = null;\n\n /**\n * Sanitize Blocks\n *\n * Enumerate blocks and clean data\n *\n * @param {{tool, data: BlockToolData}[]} blocksData[]\n */\n public sanitizeBlocks(\n blocksData: Array<{tool: string, data: BlockToolData}>,\n ): Array<{tool: string, data: BlockToolData}> {\n\n return blocksData.map((block) => {\n const toolConfig = this.composeToolConfig(block.tool);\n\n if (_.isEmpty(toolConfig)) {\n return block;\n }\n\n block.data = this.deepSanitize(block.data, toolConfig);\n\n return block;\n });\n }\n\n /**\n * Method recursively reduces Block's data and cleans with passed rules\n *\n * @param {BlockToolData|object|*} dataToSanitize - taint string or object/array that contains taint string\n * @param {SanitizerConfig} rules - object with sanitizer rules\n */\n public deepSanitize(dataToSanitize: any, rules: SanitizerConfig): any {\n /**\n * BlockData It may contain 3 types:\n * - Array\n * - Object\n * - Primitive\n */\n if (Array.isArray(dataToSanitize)) {\n /**\n * Array: call sanitize for each item\n */\n return this.cleanArray(dataToSanitize, rules);\n } else if (typeof dataToSanitize === 'object') {\n /**\n * Objects: just clean object deeper.\n */\n return this.cleanObject(dataToSanitize, rules);\n } else {\n /**\n * Primitives (number|string|boolean): clean this item\n *\n * Clean only strings\n */\n if (typeof dataToSanitize === 'string') {\n return this.cleanOneItem(dataToSanitize, rules);\n }\n return dataToSanitize;\n }\n }\n\n /**\n * Cleans string from unwanted tags\n * Method allows to use default config\n *\n * @param {string} taintString - taint string\n * @param {SanitizerConfig} customConfig - allowed tags\n *\n * @return {string} clean HTML\n */\n public clean(taintString: string, customConfig: SanitizerConfig = {} as SanitizerConfig): string {\n\n const sanitizerConfig = {\n tags: customConfig,\n };\n\n /**\n * API client can use custom config to manage sanitize process\n */\n const sanitizerInstance = this.createHTMLJanitorInstance(sanitizerConfig);\n return sanitizerInstance.clean(taintString);\n }\n\n /**\n * Merge with inline tool config\n *\n * @param {string} toolName\n * @param {SanitizerConfig} toolRules\n * @return {SanitizerConfig}\n */\n public composeToolConfig(toolName: string): SanitizerConfig {\n /**\n * If cache is empty, then compose tool config and put it to the cache object\n */\n if (this.configCache[toolName]) {\n return this.configCache[toolName];\n }\n\n const sanitizeGetter = this.Editor.Tools.apiSettings.SANITIZE_CONFIG;\n const toolClass = this.Editor.Tools.available[toolName];\n const baseConfig = this.getInlineToolsConfig(toolName);\n\n /**\n * If Tools doesn't provide sanitizer config or it is empty\n */\n if (!toolClass.sanitize || (toolClass[sanitizeGetter] && _.isEmpty(toolClass[sanitizeGetter]))) {\n return baseConfig;\n }\n\n const toolRules = toolClass.sanitize;\n\n const toolConfig = {} as SanitizerConfig;\n for (const fieldName in toolRules) {\n if (toolRules.hasOwnProperty(fieldName)) {\n const rule = toolRules[fieldName];\n if (typeof rule === 'object') {\n toolConfig[fieldName] = Object.assign({}, baseConfig, rule);\n } else {\n toolConfig[fieldName] = rule;\n }\n }\n }\n this.configCache[toolName] = toolConfig;\n\n return toolConfig;\n }\n\n /**\n * Returns Sanitizer config\n * When Tool's \"inlineToolbar\" value is True, get all sanitizer rules from all tools,\n * otherwise get only enabled\n */\n public getInlineToolsConfig(name: string): SanitizerConfig {\n const {Tools} = this.Editor;\n\n const toolsConfig = Tools.getToolSettings(name),\n enableInlineTools = toolsConfig.inlineToolbar || [];\n\n let config = {} as SanitizerConfig;\n\n if (typeof enableInlineTools === 'boolean' && enableInlineTools) {\n /**\n * getting all tools sanitizer rule\n */\n config = this.getAllInlineToolsConfig();\n } else {\n /**\n * getting only enabled\n */\n (enableInlineTools as string[]).map( (inlineToolName) => {\n config = Object.assign(\n config,\n Tools.inline[inlineToolName][Tools.apiSettings.SANITIZE_CONFIG],\n ) as SanitizerConfig;\n });\n }\n\n return config;\n }\n\n /**\n * Return general config for all inline tools\n */\n public getAllInlineToolsConfig(): SanitizerConfig {\n const {Tools} = this.Editor;\n\n if (this.inlineToolsConfigCache) {\n return this.inlineToolsConfigCache;\n }\n\n const config: SanitizerConfig = {} as SanitizerConfig;\n\n Object.entries(Tools.inline)\n .forEach( ([name, inlineTool]: [string, InlineToolConstructable]) => {\n Object.assign(config, inlineTool[Tools.apiSettings.SANITIZE_CONFIG]);\n });\n\n this.inlineToolsConfigCache = config;\n\n return this.inlineToolsConfigCache;\n }\n\n /**\n * Clean array\n * @param {array} array - [1, 2, {}, []]\n * @param {object} ruleForItem\n */\n private cleanArray(array: any[], ruleForItem: SanitizerConfig): any[] {\n return array.map( (arrayItem) => this.deepSanitize(arrayItem, ruleForItem));\n }\n\n /**\n * Clean object\n * @param {object} object - {level: 0, text: 'adada', items: [1,2,3]}}\n * @param {object} rules - { b: true } or true|false\n * @return {object}\n */\n private cleanObject(object: any, rules: SanitizerConfig|{[field: string]: SanitizerConfig}): any {\n const cleanData = {};\n\n for (const fieldName in object) {\n if (!object.hasOwnProperty(fieldName)) {\n continue;\n }\n\n const currentIterationItem = object[fieldName];\n\n /**\n * Get object from config by field name\n * - if it is a HTML Janitor rule, call with this rule\n * - otherwise, call with parent's config\n */\n const ruleForItem = this.isRule(rules[fieldName] as SanitizerConfig) ? rules[fieldName] : rules;\n\n cleanData[fieldName] = this.deepSanitize(currentIterationItem, ruleForItem as SanitizerConfig);\n }\n return cleanData;\n }\n\n /**\n * @param {string} taintString\n * @param {SanitizerConfig|boolean} rule\n * @return {string}\n */\n private cleanOneItem(taintString: string, rule: SanitizerConfig|boolean): string {\n if (typeof rule === 'object') {\n return this.clean(taintString, rule);\n } else if (rule === false) {\n return this.clean(taintString, {} as SanitizerConfig);\n } else {\n return taintString;\n }\n }\n\n /**\n * Check if passed item is a HTML Janitor rule:\n * { a : true }, {}, false, true, function(){} — correct rules\n * undefined, null, 0, 1, 2 — not a rules\n * @param config\n */\n private isRule(config: SanitizerConfig): boolean {\n return typeof config === 'object' || typeof config === 'boolean' || typeof config === 'function';\n }\n\n /**\n * If developer uses editor's API, then he can customize sanitize restrictions.\n * Or, sanitizing config can be defined globally in editors initialization. That config will be used everywhere\n * At least, if there is no config overrides, that API uses Default configuration\n *\n * @uses https://www.npmjs.com/package/html-janitor\n *\n * @param {SanitizerConfig} config - sanitizer extension\n */\n private createHTMLJanitorInstance(config: {tags: SanitizerConfig}): HTMLJanitor|null {\n if (config) {\n return new HTMLJanitor(config);\n }\n return null;\n }\n}\n","/**\r\n * Codex Editor Saver\r\n *\r\n * @module Saver\r\n * @author Codex Team\r\n * @version 2.0.0\r\n */\r\nimport Module from '../__module';\r\nimport {OutputData} from '../../../types';\r\n\r\ndeclare const VERSION: string;\r\n\r\n/**\r\n * @classdesc This method reduces all Blocks asyncronically and calls Block's save method to extract data\r\n *\r\n * @typedef {Saver} Saver\r\n * @property {Element} html - Editor HTML content\r\n * @property {String} json - Editor JSON output\r\n */\r\nexport default class Saver extends Module {\r\n /**\r\n * Composes new chain of Promises to fire them alternatelly\r\n * @return {OutputData}\r\n */\r\n public async save(): Promise<OutputData> {\r\n const blocks = this.Editor.BlockManager.blocks,\r\n chainData = [];\r\n\r\n blocks.forEach((block) => {\r\n chainData.push(block.data);\r\n });\r\n\r\n const extractedData = await Promise.all(chainData);\r\n\r\n const sanitizedData = await this.Editor.Sanitizer.sanitizeBlocks(extractedData);\r\n return this.makeOutput(sanitizedData);\r\n }\r\n\r\n /**\r\n * Creates output object with saved data, time and version of editor\r\n * @param {Object} allExtractedData\r\n * @return {OutputData}\r\n */\r\n private makeOutput(allExtractedData): OutputData {\r\n let totalTime = 0;\r\n const blocks = [];\r\n\r\n console.groupCollapsed('[CodexEditor saving]:');\r\n\r\n allExtractedData.forEach((extraction) => {\r\n /** Group process info */\r\n console.log(`«${extraction.tool}» saving info`, extraction);\r\n totalTime += extraction.time;\r\n blocks.push({\r\n type: extraction.tool,\r\n data: extraction.data,\r\n });\r\n });\r\n\r\n console.log('Total', totalTime);\r\n console.groupEnd();\r\n\r\n return {\r\n time: +new Date(),\r\n blocks,\r\n version: VERSION,\r\n };\r\n }\r\n}\r\n","import Shortcut from '@codexteam/shortcuts';\n\n/**\n * ShortcutData interface\n * Each shortcut must have name and handler\n * `name` is a shortcut, like 'CMD+K', 'CMD+B' etc\n * `handler` is a callback\n */\nexport interface ShortcutData {\n\n /**\n * Shortcut name\n * Ex. CMD+I, CMD+B ....\n */\n name: string;\n\n /**\n * Shortcut handler\n */\n handler(event): void;\n}\n\n/**\n * Contains keyboard and mouse events binded on each Block by Block Manager\n */\nimport Module from '../__module';\n\n/**\n * @class Shortcut\n * @classdesc Allows to register new shortcut\n *\n * Internal Shortcuts Module\n */\nexport default class Shortcuts extends Module {\n /**\n * All registered shortcuts\n * @type {Shortcut[]}\n */\n private registeredShortcuts: Shortcut[] = [];\n\n /**\n * Register shortcut\n * @param {ShortcutData} shortcut\n */\n public add(shortcut: ShortcutData): void {\n const { UI } = this.Editor;\n\n const newShortcut = new Shortcut({\n name: shortcut.name,\n on: UI.nodes.redactor,\n callback: shortcut.handler,\n });\n\n this.registeredShortcuts.push(newShortcut);\n }\n\n /**\n * Remove shortcut\n * @param {ShortcutData} shortcut\n */\n public remove(shortcut: string): void {\n const index = this.registeredShortcuts.findIndex((shc) => shc.name === shortcut);\n\n this.registeredShortcuts[index].remove();\n this.registeredShortcuts.splice(index, 1);\n }\n}\n","import Module from '../../__module';\r\nimport $ from '../../dom';\r\n\r\n/**\r\n * Block Settings\r\n *\r\n * ____ Settings Panel ____\r\n * | ...................... |\r\n * | . Tool Settings . |\r\n * | ...................... |\r\n * | . Default Settings . |\r\n * | ...................... |\r\n * |________________________|\r\n */\r\nexport default class BlockSettings extends Module {\r\n\r\n /**\r\n * Module Events\r\n * @return {{opened: string, closed: string}}\r\n */\r\n public get events(): {opened: string, closed: string} {\r\n return {\r\n opened: 'block-settings-opened',\r\n closed: 'block-settings-closed',\r\n };\r\n }\r\n\r\n /**\r\n * Block Settings CSS\r\n * @return {{wrapper, wrapperOpened, toolSettings, defaultSettings, button}}\r\n */\r\n private static get CSS() {\r\n return {\r\n // Settings Panel\r\n wrapper: 'ce-settings',\r\n wrapperOpened: 'ce-settings--opened',\r\n toolSettings: 'ce-settings__plugin-zone',\r\n defaultSettings: 'ce-settings__default-zone',\r\n\r\n button: 'ce-settings__button',\r\n };\r\n }\r\n\r\n /**\r\n * Is Block Settings opened or not\r\n * @returns {boolean}\r\n */\r\n public get opened(): boolean {\r\n return this.nodes.wrapper.classList.contains(BlockSettings.CSS.wrapperOpened);\r\n }\r\n\r\n /**\r\n * Block settings UI HTML elements\r\n */\r\n public nodes: {[key: string]: HTMLElement} = {\r\n wrapper: null,\r\n toolSettings: null,\r\n defaultSettings: null,\r\n };\r\n\r\n /**\r\n * Panel with block settings with 2 sections:\r\n * - Tool's Settings\r\n * - Default Settings [Move, Remove, etc]\r\n *\r\n * @return {Element}\r\n */\r\n public make(): void {\r\n this.nodes.wrapper = $.make('div', BlockSettings.CSS.wrapper);\r\n\r\n this.nodes.toolSettings = $.make('div', BlockSettings.CSS.toolSettings);\r\n this.nodes.defaultSettings = $.make('div', BlockSettings.CSS.defaultSettings);\r\n\r\n $.append(this.nodes.wrapper, [this.nodes.toolSettings, this.nodes.defaultSettings]);\r\n }\r\n\r\n /**\r\n * Open Block Settings pane\r\n */\r\n public open(): void {\r\n this.nodes.wrapper.classList.add(BlockSettings.CSS.wrapperOpened);\r\n\r\n /**\r\n * Fill Tool's settings\r\n */\r\n this.addToolSettings();\r\n\r\n /**\r\n * Add default settings that presents for all Blocks\r\n */\r\n this.addDefaultSettings();\r\n\r\n /** Tell to subscribers that block settings is opened */\r\n this.Editor.Events.emit(this.events.opened);\r\n }\r\n\r\n /**\r\n * Close Block Settings pane\r\n */\r\n public close(): void {\r\n this.nodes.wrapper.classList.remove(BlockSettings.CSS.wrapperOpened);\r\n\r\n /** Clear settings */\r\n this.nodes.toolSettings.innerHTML = '';\r\n this.nodes.defaultSettings.innerHTML = '';\r\n\r\n /** Tell to subscribers that block settings is closed */\r\n this.Editor.Events.emit(this.events.closed);\r\n }\r\n\r\n /**\r\n * Add Tool's settings\r\n */\r\n private addToolSettings(): void {\r\n if (typeof this.Editor.BlockManager.currentBlock.tool.renderSettings === 'function') {\r\n $.append(this.nodes.toolSettings, this.Editor.BlockManager.currentBlock.tool.renderSettings());\r\n }\r\n }\r\n\r\n /**\r\n * Add default settings\r\n */\r\n private addDefaultSettings(): void {\r\n $.append(this.nodes.defaultSettings, this.Editor.BlockManager.currentBlock.renderTunes());\r\n }\r\n}\r\n","import Module from '../../__module';\nimport $ from '../../dom';\n\n/**\n *\n * «Toolbar» is the node that moves up/down over current block\n *\n * ______________________________________ Toolbar ____________________________________________\n * | |\n * | ..................... Content .................... ......... Block Actions .......... |\n * | . . . . |\n * | . . . [Open Settings] . |\n * | . [Plus Button] [Toolbox: {Tool1}, {Tool2}] . . . |\n * | . . . [Settings Panel] . |\n * | .................................................. .................................. |\n * | |\n * |___________________________________________________________________________________________|\n *\n *\n * Toolbox — its an Element contains tools buttons. Can be shown by Plus Button.\n *\n * _______________ Toolbox _______________\n * | |\n * | [Header] [Image] [List] [Quote] ... |\n * |_______________________________________|\n *\n *\n * Settings Panel — is an Element with block settings:\n *\n * ____ Settings Panel ____\n * | ...................... |\n * | . Tool Settings . |\n * | ...................... |\n * | . Default Settings . |\n * | ...................... |\n * |________________________|\n *\n *\n * @class\n * @classdesc Toolbar module\n *\n * @typedef {Toolbar} Toolbar\n * @property {Object} nodes\n * @property {Element} nodes.wrapper - Toolbar main element\n * @property {Element} nodes.content - Zone with Plus button and toolbox.\n * @property {Element} nodes.actions - Zone with Block Settings and Remove Button\n * @property {Element} nodes.blockActionsButtons - Zone with Block Buttons: [Settings]\n * @property {Element} nodes.plusButton - Button that opens or closes Toolbox\n * @property {Element} nodes.toolbox - Container for tools\n * @property {Element} nodes.settingsToggler - open/close Settings Panel button\n * @property {Element} nodes.settings - Settings Panel\n * @property {Element} nodes.pluginSettings - Plugin Settings section of Settings Panel\n * @property {Element} nodes.defaultSettings - Default Settings section of Settings Panel\n */\nexport default class Toolbar extends Module {\n /**\n * HTML Elements used for Toolbar UI\n */\n public nodes: {[key: string]: HTMLElement} = {\n wrapper : null,\n content : null,\n actions : null,\n\n // Content Zone\n plusButton : null,\n\n // Actions Zone\n blockActionsButtons: null,\n settingsToggler : null,\n };\n\n /**\n * CSS styles\n * @return {Object}\n */\n private static get CSS() {\n return {\n toolbar: 'ce-toolbar',\n content: 'ce-toolbar__content',\n actions: 'ce-toolbar__actions',\n\n toolbarOpened: 'ce-toolbar--opened',\n\n // Content Zone\n plusButton: 'ce-toolbar__plus',\n plusButtonHidden: 'ce-toolbar__plus--hidden',\n\n // Actions Zone\n blockActionsButtons: 'ce-toolbar__actions-buttons',\n settingsToggler: 'ce-toolbar__settings-btn',\n };\n }\n\n /**\n * Makes toolbar\n */\n public make(): void {\n this.nodes.wrapper = $.make('div', Toolbar.CSS.toolbar);\n\n /**\n * Make Content Zone and Actions Zone\n */\n ['content', 'actions'].forEach( (el) => {\n this.nodes[el] = $.make('div', Toolbar.CSS[el]);\n $.append(this.nodes.wrapper, this.nodes[el]);\n });\n\n /**\n * Fill Content Zone:\n * - Plus Button\n * - Toolbox\n */\n this.nodes.plusButton = $.make('div', Toolbar.CSS.plusButton);\n $.append(this.nodes.plusButton, $.svg('plus', 14, 14));\n $.append(this.nodes.content, this.nodes.plusButton);\n this.Editor.Listeners.on(this.nodes.plusButton, 'click', () => this.plusButtonClicked(), false);\n\n /**\n * Make a Toolbox\n */\n this.Editor.Toolbox.make();\n\n /**\n * Fill Actions Zone:\n * - Settings Toggler\n * - Remove Block Button\n * - Settings Panel\n */\n this.nodes.blockActionsButtons = $.make('div', Toolbar.CSS.blockActionsButtons);\n this.nodes.settingsToggler = $.make('span', Toolbar.CSS.settingsToggler);\n const settingsIcon = $.svg('dots', 18, 4);\n\n $.append(this.nodes.settingsToggler, settingsIcon);\n $.append(this.nodes.blockActionsButtons, this.nodes.settingsToggler);\n $.append(this.nodes.actions, this.nodes.blockActionsButtons);\n\n /**\n * Make and append Settings Panel\n */\n this.Editor.BlockSettings.make();\n $.append(this.nodes.actions, this.Editor.BlockSettings.nodes.wrapper);\n\n /**\n * Append toolbar to the Editor\n */\n $.append(this.Editor.UI.nodes.wrapper, this.nodes.wrapper);\n\n /**\n * Bind events on the Toolbar elements\n */\n this.bindEvents();\n }\n\n /**\n * Move Toolbar to the Current Block\n * @param {Boolean} forceClose - force close Toolbar Settings and Toolbar\n */\n public move(forceClose: boolean = true): void {\n if (forceClose) {\n /** Close Toolbox when we move toolbar */\n this.Editor.Toolbox.close();\n this.Editor.BlockSettings.close();\n }\n\n const currentBlock = this.Editor.BlockManager.currentBlock.holder;\n\n /**\n * If no one Block selected as a Current\n */\n if (!currentBlock) {\n return;\n }\n\n /**\n * Set Toolbar Min Height as Block's height\n * Plus Button and Toolbox positioned at the center of the Toolbar\n */\n const contentOffset = Math.floor(currentBlock.offsetHeight / 2);\n\n this.nodes.plusButton.style.transform = `translate3d(0, calc(${contentOffset}px - 50%), 0)`;\n this.Editor.Toolbox.nodes.toolbox.style.transform = `translate3d(0, calc(${contentOffset}px - 50%), 0)`;\n /**\n * Move Toolbar to the Top coordinate of Block\n */\n this.nodes.wrapper.style.transform = `translate3D(0, ${Math.floor(currentBlock.offsetTop)}px, 0)`;\n }\n\n /**\n * Open Toolbar with Plus Button\n */\n public open(): void {\n /**\n * Wait Block rendering for correct height computing\n */\n setTimeout(() => {\n this.move();\n this.nodes.wrapper.classList.add(Toolbar.CSS.toolbarOpened);\n }, 50);\n }\n\n /**\n * returns toolbar opened state\n * @return {Boolean}\n */\n public get opened(): boolean {\n return this.nodes.wrapper.classList.contains(Toolbar.CSS.toolbarOpened);\n }\n\n /**\n * Close the Toolbar\n */\n public close(): void {\n this.nodes.wrapper.classList.remove(Toolbar.CSS.toolbarOpened);\n\n /** Close components */\n this.Editor.Toolbox.close();\n this.Editor.BlockSettings.close();\n }\n\n /**\n * Plus Button public methods\n * @return {{hide: function(): void, show: function(): void}}\n */\n public get plusButton(): {hide: () => void, show: () => void} {\n return {\n hide: () => this.nodes.plusButton.classList.add(Toolbar.CSS.plusButtonHidden),\n show: () => {\n if (this.Editor.Toolbox.isEmpty) {\n return;\n }\n this.nodes.plusButton.classList.remove(Toolbar.CSS.plusButtonHidden);\n },\n };\n }\n\n /**\n * Handler for Plus Button\n * @param {MouseEvent} event\n */\n private plusButtonClicked(): void {\n this.Editor.Toolbox.toggle();\n }\n\n /**\n * Bind events on the Toolbar Elements:\n * - Block Settings\n */\n private bindEvents(): void {\n /**\n * Settings toggler\n */\n this.Editor.Listeners.on(this.nodes.settingsToggler, 'click', () => this.settingsTogglerClicked());\n }\n\n /**\n * Clicks on the Block Settings toggler\n */\n private settingsTogglerClicked(): void {\n if (this.Editor.BlockSettings.opened) {\n this.Editor.BlockSettings.close();\n } else {\n this.Editor.BlockSettings.open();\n }\n }\n}\n","import Module from '../../__module';\nimport $ from '../../dom';\n\nimport BoldInlineTool from '../../inline-tools/inline-tool-bold';\nimport ItalicInlineTool from '../../inline-tools/inline-tool-italic';\nimport LinkInlineTool from '../../inline-tools/inline-tool-link';\nimport SelectionUtils from '../../selection';\nimport _ from '../../utils';\nimport {InlineTool, InlineToolConstructable, ToolConstructable, ToolSettings} from '../../../../types';\n\n/**\n * Inline toolbar with actions that modifies selected text fragment\n *\n * |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|\n * | B i [link] [mark] |\n * |________________________|\n */\nexport default class InlineToolbar extends Module {\n\n /**\n * Returns internal inline tools\n * Includes Bold, Italic, Link\n */\n private get internalTools(): {[name: string]: InlineTool} {\n return {\n bold: this.Editor.Tools.constructInline(BoldInlineTool),\n italic: this.Editor.Tools.constructInline(ItalicInlineTool),\n link: this.Editor.Tools.constructInline(LinkInlineTool),\n };\n }\n\n /**\n * Get external tools\n * Tools that has isInline is true\n */\n private get externalTools(): {[name: string]: InlineTool} {\n const result = {};\n\n for (const tool in this.Editor.Tools.inline) {\n if (this.Editor.Tools.inline.hasOwnProperty(tool)) {\n result[tool] = this.Editor.Tools.constructInline(this.Editor.Tools.inline[tool]);\n }\n }\n\n return result;\n }\n\n /**\n * CSS styles\n */\n public CSS = {\n inlineToolbar: 'ce-inline-toolbar',\n inlineToolbarShowed: 'ce-inline-toolbar--showed',\n buttonsWrapper: 'ce-inline-toolbar__buttons',\n actionsWrapper: 'ce-inline-toolbar__actions',\n inlineToolButton: 'ce-inline-tool',\n inlineToolButtonLast: 'ce-inline-tool--last',\n };\n\n /**\n * Inline Toolbar elements\n */\n private nodes: {wrapper: HTMLElement, buttons: HTMLElement, actions: HTMLElement} = {\n wrapper: null,\n buttons: null,\n /**\n * Zone below the buttons where Tools can create additional actions by 'renderActions()' method\n * For example, input for the 'link' tool or textarea for the 'comment' tool\n */\n actions: null,\n };\n\n /**\n * Margin above/below the Toolbar\n */\n private readonly toolbarVerticalMargin: number = 20;\n\n /**\n * Tools instances\n */\n private toolsInstances: Map<string, InlineTool>;\n\n /**\n * Inline Toolbar Tools\n *\n * @returns Map<string, InlineTool>\n */\n get tools(): Map<string, InlineTool> {\n if (!this.toolsInstances || this.toolsInstances.size === 0) {\n const allTools = this.inlineTools;\n\n this.toolsInstances = new Map();\n for (const tool in allTools) {\n if (allTools.hasOwnProperty(tool)) {\n this.toolsInstances.set(tool, allTools[tool]);\n }\n }\n }\n\n return this.toolsInstances;\n }\n\n /**\n * Making DOM\n */\n public make() {\n this.nodes.wrapper = $.make('div', this.CSS.inlineToolbar);\n this.nodes.buttons = $.make('div', this.CSS.buttonsWrapper);\n this.nodes.actions = $.make('div', this.CSS.actionsWrapper);\n\n /**\n * Append Inline Toolbar to the Editor\n */\n $.append(this.nodes.wrapper, [this.nodes.buttons, this.nodes.actions]);\n $.append(this.Editor.UI.nodes.wrapper, this.nodes.wrapper);\n\n /**\n * Append Inline Toolbar Tools\n */\n this.addTools();\n\n }\n\n /**\n * Moving / appearance\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n */\n\n /**\n * Shows Inline Toolbar by keyup/mouseup\n * @param {KeyboardEvent|MouseEvent} event\n */\n public handleShowingEvent(event): void {\n if (!this.allowedToShow(event)) {\n this.close();\n return;\n }\n\n this.move();\n this.open();\n\n /** Check Tools state for selected fragment */\n this.checkToolsState();\n\n /** Clear selection */\n this.Editor.BlockSelection.clearSelection();\n }\n\n /**\n * Move Toolbar to the selected text\n */\n public move(): void {\n const selectionRect = SelectionUtils.rect as DOMRect;\n const wrapperOffset = this.Editor.UI.nodes.wrapper.getBoundingClientRect();\n const newCoords = {\n x: selectionRect.x - wrapperOffset.left,\n y: selectionRect.y\n + selectionRect.height\n // + window.scrollY\n - wrapperOffset.top\n + this.toolbarVerticalMargin,\n };\n\n /**\n * If we know selections width, place InlineToolbar to center\n */\n if (selectionRect.width) {\n newCoords.x += Math.floor(selectionRect.width / 2);\n }\n\n this.nodes.wrapper.style.left = Math.floor(newCoords.x) + 'px';\n this.nodes.wrapper.style.top = Math.floor(newCoords.y) + 'px';\n }\n\n /**\n * Hides Inline Toolbar\n */\n public close(): void {\n this.nodes.wrapper.classList.remove(this.CSS.inlineToolbarShowed);\n this.tools.forEach( (toolInstance, toolName) => {\n if (typeof toolInstance.clear === 'function') {\n toolInstance.clear();\n }\n });\n }\n\n /**\n * Shows Inline Toolbar\n */\n private open(): void {\n /**\n * Filter inline-tools and show only allowed by Block's Tool\n */\n this.filterTools();\n\n /**\n * Show Inline Toolbar\n */\n this.nodes.wrapper.classList.add(this.CSS.inlineToolbarShowed);\n\n /**\n * Call 'clear' method for Inline Tools (for example, 'link' want to clear input)\n */\n this.tools.forEach( (toolInstance: InlineTool) => {\n if (typeof toolInstance.clear === 'function') {\n toolInstance.clear();\n }\n });\n }\n\n /**\n * Need to show Inline Toolbar or not\n * @param {KeyboardEvent|MouseEvent} event\n */\n private allowedToShow(event): boolean {\n /**\n * Tags conflicts with window.selection function.\n * Ex. IMG tag returns null (Firefox) or Redactors wrapper (Chrome)\n */\n const tagsConflictsWithSelection = ['IMG', 'INPUT'];\n\n if (event && tagsConflictsWithSelection.includes(event.target.tagName)) {\n return false;\n }\n\n const currentSelection = SelectionUtils.get(),\n selectedText = SelectionUtils.text;\n\n // old browsers\n if (!currentSelection || !currentSelection.anchorNode) {\n return false;\n }\n\n // empty selection\n if (currentSelection.isCollapsed || selectedText.length < 1) {\n return false;\n }\n\n // is enabled by current Block's Tool\n const currentBlock = this.Editor.BlockManager.getBlock(currentSelection.anchorNode as HTMLElement);\n\n if (!currentBlock) {\n return false;\n }\n\n const toolSettings = this.Editor.Tools.getToolSettings(currentBlock.name);\n\n return toolSettings && toolSettings[this.Editor.Tools.apiSettings.IS_ENABLED_INLINE_TOOLBAR];\n }\n\n /**\n * Show only allowed Tools\n */\n private filterTools(): void {\n const currentSelection = SelectionUtils.get(),\n currentBlock = this.Editor.BlockManager.getBlock(currentSelection.anchorNode as HTMLElement);\n\n const toolSettings = this.Editor.Tools.getToolSettings(currentBlock.name),\n inlineToolbarSettings = toolSettings && toolSettings[this.Editor.Tools.apiSettings.IS_ENABLED_INLINE_TOOLBAR];\n\n /**\n * All Inline Toolbar buttons\n * @type {HTMLElement[]}\n */\n const buttons = Array.from(this.nodes.buttons.querySelectorAll(`.${this.CSS.inlineToolButton}`)) as HTMLElement[];\n\n /**\n * Show previously hided\n */\n buttons.forEach((button) => {\n button.hidden = false;\n button.classList.remove(this.CSS.inlineToolButtonLast);\n });\n\n /**\n * Filter buttons if Block Tool pass config like inlineToolbar=['link']\n */\n if (Array.isArray(inlineToolbarSettings)) {\n buttons.forEach((button) => {\n button.hidden = !inlineToolbarSettings.includes(button.dataset.tool);\n });\n }\n\n /**\n * Tick for removing right-margin from last visible button.\n * Current generation of CSS does not allow to filter :visible elements\n */\n const lastVisibleButton = buttons.filter((button) => !button.hidden).pop();\n\n if (lastVisibleButton) {\n lastVisibleButton.classList.add(this.CSS.inlineToolButtonLast);\n }\n }\n\n /**\n * Working with Tools\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n */\n\n /**\n * Fill Inline Toolbar with Tools\n */\n private addTools(): void {\n this.tools.forEach( (toolInstance, toolName) => {\n this.addTool(toolName, toolInstance);\n });\n }\n\n /**\n * Add tool button and activate clicks\n */\n private addTool(toolName: string, tool: InlineTool): void {\n const {\n Listeners,\n Tools,\n } = this.Editor;\n\n const button = tool.render();\n\n if (!button) {\n _.log('Render method must return an instance of Node', 'warn', toolName);\n return;\n }\n\n button.dataset.tool = toolName;\n this.nodes.buttons.appendChild(button);\n\n if (typeof tool.renderActions === 'function') {\n const actions = tool.renderActions();\n this.nodes.actions.appendChild(actions);\n }\n\n Listeners.on(button, 'click', (event) => {\n this.toolClicked(tool);\n event.preventDefault();\n });\n\n /**\n * Enable shortcuts\n * Ignore tool that doesn't have shortcut or empty string\n */\n const toolSettings = Tools.getToolSettings(toolName);\n\n let shortcut = null;\n\n /**\n * Get internal inline tools\n */\n const internalTools: string[] = Object\n .entries(Tools.internalTools)\n .filter(([name, toolClass]: [string, ToolConstructable|ToolSettings]) => {\n if (_.isFunction(toolClass)) {\n return toolClass[Tools.apiSettings.IS_INLINE];\n }\n\n return (toolClass as ToolSettings).class[Tools.apiSettings.IS_INLINE];\n })\n .map(([name, toolClass]: [string, InlineToolConstructable|ToolSettings]) => name);\n\n /**\n * 1) For internal tools, check public getter 'shortcut'\n * 2) For external tools, check tool's settings\n */\n if (internalTools.includes(toolName)) {\n shortcut = this.inlineTools[toolName].shortcut;\n } else if (toolSettings && toolSettings[Tools.apiSettings.SHORTCUT]) {\n shortcut = toolSettings[Tools.apiSettings.SHORTCUT];\n }\n\n if (shortcut) {\n this.enableShortcuts(tool, shortcut);\n }\n }\n\n /**\n * Enable Tool shortcut with Editor Shortcuts Module\n * @param {InlineTool} tool - Tool instance\n * @param {string} shortcut - shortcut according to the ShortcutData Module format\n */\n private enableShortcuts(tool: InlineTool, shortcut: string): void {\n this.Editor.Shortcuts.add({\n name: shortcut,\n handler: (event) => {\n const {currentBlock} = this.Editor.BlockManager;\n\n /**\n * Editor is not focused\n */\n if (!currentBlock) {\n return;\n }\n\n /**\n * We allow to fire shortcut with empty selection (isCollapsed=true)\n * it can be used by tools like «Mention» that works without selection:\n * Example: by SHIFT+@ show dropdown and insert selected username\n */\n // if (SelectionUtils.isCollapsed) return;\n\n const toolSettings = this.Editor.Tools.getToolSettings(currentBlock.name);\n\n if (!toolSettings || !toolSettings[this.Editor.Tools.apiSettings.IS_ENABLED_INLINE_TOOLBAR]) {\n return;\n }\n\n event.preventDefault();\n this.toolClicked(tool);\n },\n });\n }\n\n /**\n * Inline Tool button clicks\n * @param {InlineTool} tool - Tool's instance\n */\n private toolClicked(tool: InlineTool): void {\n const range = SelectionUtils.range;\n\n tool.surround(range);\n this.checkToolsState();\n }\n\n /**\n * Check Tools` state by selection\n */\n private checkToolsState(): void {\n this.tools.forEach( (toolInstance) => {\n toolInstance.checkState(SelectionUtils.get());\n });\n }\n\n /**\n * Get inline tools tools\n * Tools that has isInline is true\n */\n private get inlineTools(): {[name: string]: InlineTool} {\n const result = {};\n\n for (const tool in this.Editor.Tools.inline) {\n if (this.Editor.Tools.inline.hasOwnProperty(tool)) {\n result[tool] = this.Editor.Tools.constructInline(this.Editor.Tools.inline[tool]);\n }\n }\n\n return result;\n }\n}\n","import Module from '../../__module';\r\nimport $ from '../../dom';\r\nimport _ from '../../utils';\r\nimport {BlockToolConstructable} from '../../../../types';\r\n\r\n/**\r\n * @class Toolbox\r\n * @classdesc Holder for Tools\r\n *\r\n * @typedef {Toolbox} Toolbox\r\n * @property {Boolean} opened - opening state\r\n * @property {Object} nodes - Toolbox nodes\r\n * @property {Object} CSS - CSS class names\r\n *\r\n */\r\nexport default class Toolbox extends Module {\r\n\r\n private static LEAF_DIRECTIONS = {\r\n RIGHT: 'right',\r\n LEFT: 'left',\r\n };\r\n\r\n /**\r\n * Opening state\r\n * @type {boolean}\r\n */\r\n public opened: boolean = false;\r\n\r\n /**\r\n * HTMLElements used for Toolbox UI\r\n */\r\n public nodes: {\r\n toolbox: HTMLElement,\r\n buttons: HTMLElement[],\r\n } = {\r\n toolbox: null,\r\n buttons: [],\r\n };\r\n\r\n /**\r\n * Active button index\r\n * -1 equals no chosen Tool\r\n * @type {number}\r\n */\r\n private activeButtonIndex: number = -1;\r\n\r\n /**\r\n * How many tools displayed in Toolbox\r\n * @type {number}\r\n */\r\n private displayedToolsCount: number = 0;\r\n\r\n /**\r\n * CSS styles\r\n * @return {{toolbox: string, toolboxButton: string, toolboxOpened: string}}\r\n */\r\n static get CSS() {\r\n return {\r\n toolbox: 'ce-toolbox',\r\n toolboxButton: 'ce-toolbox__button',\r\n toolboxButtonActive : 'ce-toolbox__button--active',\r\n toolboxOpened: 'ce-toolbox--opened',\r\n };\r\n }\r\n\r\n /**\r\n * Makes the Toolbox\r\n */\r\n public make(): void {\r\n this.nodes.toolbox = $.make('div', Toolbox.CSS.toolbox);\r\n $.append(this.Editor.Toolbar.nodes.content, this.nodes.toolbox);\r\n\r\n this.addTools();\r\n }\r\n\r\n /**\r\n * Toolbox Tool's button click handler\r\n *\r\n * @param {MouseEvent|KeyboardEvent} event\r\n * @param {string} toolName\r\n */\r\n public toolButtonActivate(event: MouseEvent|KeyboardEvent, toolName: string): void {\r\n const tool = this.Editor.Tools.toolsClasses[toolName] as BlockToolConstructable;\r\n\r\n this.insertNewBlock(tool, toolName);\r\n }\r\n\r\n /**\r\n * Open Toolbox with Tools\r\n */\r\n public open(): void {\r\n if (this.isEmpty) {\r\n return;\r\n }\r\n\r\n this.nodes.toolbox.classList.add(Toolbox.CSS.toolboxOpened);\r\n this.opened = true;\r\n }\r\n\r\n /**\r\n * Close Toolbox\r\n */\r\n public close(): void {\r\n this.nodes.toolbox.classList.remove(Toolbox.CSS.toolboxOpened);\r\n this.opened = false;\r\n\r\n /** remove active item pointer */\r\n this.activeButtonIndex = -1;\r\n const activeButton = this.nodes.toolbox.querySelector(`.${Toolbox.CSS.toolboxButtonActive}`);\r\n\r\n if (activeButton) {\r\n activeButton.classList.remove(Toolbox.CSS.toolboxButtonActive);\r\n }\r\n }\r\n\r\n /**\r\n * Close Toolbox\r\n */\r\n public toggle(): void {\r\n if (!this.opened) {\r\n this.open();\r\n } else {\r\n this.close();\r\n }\r\n }\r\n\r\n /**\r\n * Leaf\r\n * flip through the toolbox items\r\n * @param {String} direction - leaf direction, right is default\r\n */\r\n public leaf(direction: string = Toolbox.LEAF_DIRECTIONS.RIGHT): void {\r\n const childNodes = this.nodes.toolbox.childNodes;\r\n\r\n /**\r\n * If activeButtonIndex === -1 then we have no chosen Tool in Toolbox\r\n */\r\n if (this.activeButtonIndex === -1) {\r\n /**\r\n * Normalize \"previous\" Tool index depending on direction.\r\n * We need to do this to highlight \"first\" Tool correctly\r\n *\r\n * Order of Tools: [0] [1] ... [n - 1]\r\n * [0 = n] because of: n % n = 0 % n\r\n *\r\n * Direction 'right': for [0] the [n - 1] is a previous index\r\n * [n - 1] -> [0]\r\n *\r\n * Direction 'left': for [n - 1] the [0] is a previous index\r\n * [n - 1] <- [0]\r\n *\r\n * @type {number}\r\n */\r\n this.activeButtonIndex = direction === Toolbox.LEAF_DIRECTIONS.RIGHT ? -1 : 0;\r\n } else {\r\n /**\r\n * If we have chosen Tool then remove highlighting\r\n */\r\n (childNodes[this.activeButtonIndex] as HTMLElement).classList.remove(Toolbox.CSS.toolboxButtonActive);\r\n }\r\n\r\n /**\r\n * Count index for next Tool\r\n */\r\n if (direction === Toolbox.LEAF_DIRECTIONS.RIGHT) {\r\n /**\r\n * If we go right then choose next (+1) Tool\r\n * @type {number}\r\n */\r\n this.activeButtonIndex = (this.activeButtonIndex + 1) % childNodes.length;\r\n } else {\r\n /**\r\n * If we go left then choose previous (-1) Tool\r\n * Before counting module we need to add length before because of \"The JavaScript Modulo Bug\"\r\n * @type {number}\r\n */\r\n this.activeButtonIndex = (childNodes.length + this.activeButtonIndex - 1) % childNodes.length;\r\n }\r\n\r\n /**\r\n * Highlight new chosen Tool\r\n */\r\n (childNodes[this.activeButtonIndex] as HTMLElement).classList.add(Toolbox.CSS.toolboxButtonActive);\r\n }\r\n\r\n /**\r\n * get tool name when it is selected\r\n * In case when nothing selection returns null\r\n *\r\n * @return {String|null}\r\n */\r\n public get getActiveTool(): string {\r\n const childNodes = this.nodes.toolbox.childNodes;\r\n\r\n if (this.activeButtonIndex === -1) {\r\n return null;\r\n }\r\n\r\n return (childNodes[this.activeButtonIndex] as HTMLElement).title;\r\n }\r\n\r\n /**\r\n * Returns True if Toolbox is Empty and nothing to show\r\n * @return {boolean}\r\n */\r\n public get isEmpty(): boolean {\r\n return this.displayedToolsCount === 0;\r\n }\r\n\r\n /**\r\n * Iterates available tools and appends them to the Toolbox\r\n */\r\n private addTools(): void {\r\n const tools = this.Editor.Tools.available;\r\n\r\n for (const toolName in tools) {\r\n if (tools.hasOwnProperty(toolName)) {\r\n this.addTool(toolName, tools[toolName] as BlockToolConstructable);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Append Tool to the Toolbox\r\n *\r\n * @param {string} toolName - tool name\r\n * @param {BlockToolConstructable} tool - tool class\r\n */\r\n private addTool(toolName: string, tool: BlockToolConstructable): void {\r\n const api = this.Editor.Tools.apiSettings;\r\n\r\n if (tool[api.IS_DISPLAYED_IN_TOOLBOX] && !tool[api.TOOLBAR_ICON]) {\r\n _.log('Toolbar icon is missed. Tool %o skipped', 'warn', toolName);\r\n return;\r\n }\r\n\r\n /**\r\n * @todo Add checkup for the render method\r\n */\r\n // if (typeof tool.render !== 'function') {\r\n // _.log('render method missed. Tool %o skipped', 'warn', tool);\r\n // return;\r\n // }\r\n\r\n /**\r\n * Skip tools that pass 'displayInToolbox=false'\r\n */\r\n if (!tool[api.IS_DISPLAYED_IN_TOOLBOX]) {\r\n return;\r\n }\r\n\r\n const button = $.make('li', [ Toolbox.CSS.toolboxButton ], {\r\n title: toolName,\r\n });\r\n\r\n button.innerHTML = tool.toolboxIcon;\r\n\r\n $.append(this.nodes.toolbox, button);\r\n\r\n this.nodes.toolbox.appendChild(button);\r\n this.nodes.buttons.push(button);\r\n\r\n /**\r\n * Add click listener\r\n */\r\n this.Editor.Listeners.on(button, 'click', (event: KeyboardEvent|MouseEvent) => {\r\n this.toolButtonActivate(event, toolName);\r\n });\r\n\r\n /**\r\n * Enable shortcut\r\n */\r\n const toolSettings = this.Editor.Tools.getToolSettings(toolName);\r\n\r\n if (toolSettings && toolSettings[this.Editor.Tools.apiSettings.SHORTCUT]) {\r\n this.enableShortcut(tool, toolName, toolSettings[this.Editor.Tools.apiSettings.SHORTCUT]);\r\n }\r\n\r\n /** Increment Tools count */\r\n this.displayedToolsCount++;\r\n }\r\n\r\n /**\r\n * Enable shortcut Block Tool implemented shortcut\r\n * @param {BlockToolConstructable} tool - Tool class\r\n * @param {String} toolName - Tool name\r\n * @param {String} shortcut - shortcut according to the ShortcutData Module format\r\n */\r\n private enableShortcut(tool: BlockToolConstructable, toolName: string, shortcut: string) {\r\n this.Editor.Shortcuts.add({\r\n name: shortcut,\r\n handler: (event: KeyboardEvent) => {\r\n event.preventDefault();\r\n this.insertNewBlock(tool, toolName);\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Inserts new block\r\n * Can be called when button clicked on Toolbox or by ShortcutData\r\n *\r\n * @param {BlockToolConstructable} tool - Tool Class\r\n * @param {String} toolName - Tool name\r\n */\r\n private insertNewBlock(tool: BlockToolConstructable, toolName: string) {\r\n /**\r\n * @type {Block}\r\n */\r\n const currentBlock = this.Editor.BlockManager.currentBlock;\r\n\r\n /**\r\n * We do replace if:\r\n * - block is empty\r\n * - block is not irreplaceable\r\n * @type {Array}\r\n */\r\n let newBlock;\r\n\r\n if (!tool[this.Editor.Tools.apiSettings.IS_IRREPLACEBLE_TOOL] && currentBlock.isEmpty) {\r\n newBlock = this.Editor.BlockManager.replace(toolName);\r\n } else {\r\n newBlock = this.Editor.BlockManager.insert(toolName);\r\n }\r\n\r\n /**\r\n * Apply callback before inserting html\r\n */\r\n newBlock.call('appendCallback', {});\r\n\r\n this.Editor.Caret.setToBlock(newBlock);\r\n\r\n /**\r\n * close toolbar when node is changed\r\n */\r\n this.Editor.Toolbar.close();\r\n }\r\n}\r\n","import Paragraph from '../tools/paragraph/dist/bundle';\nimport Module from '../__module';\nimport _ from '../utils';\nimport {BlockToolConstructable, ToolConfig, ToolConstructable, ToolSettings} from '../../../types';\nimport BoldInlineTool from '../inline-tools/inline-tool-bold';\nimport ItalicInlineTool from '../inline-tools/inline-tool-italic';\nimport LinkInlineTool from '../inline-tools/inline-tool-link';\n\n/**\n * @module Codex Editor Tools Submodule\n *\n * Creates Instances from Plugins and binds external config to the instances\n */\n\n/**\n * Each Tool must contain the following important objects:\n *\n * @typedef {Object} ToolConfig {@link docs/tools.md}\n * @property {String} iconClassname - this a icon in toolbar\n * @property {Boolean} displayInToolbox - will be displayed in toolbox. Default value is TRUE\n * @property {Boolean} enableLineBreaks - inserts new block or break lines. Default value is FALSE\n * @property {Boolean|String[]} inlineToolbar - Pass `true` to enable the Inline Toolbar with all Tools,\n * all pass an array with specified Tools list\n * @property render @todo add description\n * @property save @todo add description\n * @property settings @todo add description\n * @property validate - method that validates output data before saving\n */\n\n/**\n * @typedef {Function} Tool {@link docs/tools.md}\n * @property {Boolean} displayInToolbox - By default, tools won't be added in the Toolbox. Pass true to add.\n * @property {String} iconClassName - CSS class name for the Toolbox button\n * @property {Boolean} irreplaceable - Toolbox behaviour: replace or add new block below\n * @property render\n * @property save\n * @property settings\n * @property validate\n *\n * @todo update according to current API\n * @todo describe Tool in the {@link docs/tools.md}\n */\n\n/**\n * Class properties:\n *\n * @typedef {Tools} Tools\n * @property {Tools[]} toolsAvailable - available Tools\n * @property {Tools[]} toolsUnavailable - unavailable Tools\n * @property {object} toolsClasses - all classes\n * @property {object} toolsSettings - Tools settings\n * @property {EditorConfig} config - Editor config\n */\nexport default class Tools extends Module {\n\n /**\n * Returns available Tools\n * @return {Tool[]}\n */\n public get available(): {[name: string]: ToolConstructable} {\n return this.toolsAvailable;\n }\n\n /**\n * Returns unavailable Tools\n * @return {Tool[]}\n */\n public get unavailable(): {[name: string]: ToolConstructable} {\n return this.toolsUnavailable;\n }\n\n /**\n * Return Tools for the Inline Toolbar\n * @return {Object} - object of Inline Tool's classes\n */\n public get inline(): {[name: string]: ToolConstructable} {\n if (this._inlineTools) {\n return this._inlineTools;\n }\n\n const tools = Object.entries(this.available).filter( ([name, tool]) => {\n if (!tool[this.apiSettings.IS_INLINE]) {\n return false;\n }\n\n /**\n * Some Tools validation\n */\n const inlineToolRequiredMethods = ['render', 'surround', 'checkState'];\n const notImplementedMethods = inlineToolRequiredMethods.filter( (method) => !this.constructInline(tool)[method]);\n\n if (notImplementedMethods.length) {\n _.log(\n `Incorrect Inline Tool: ${tool.name}. Some of required methods is not implemented %o`,\n 'warn',\n notImplementedMethods,\n );\n return false;\n }\n\n return true;\n });\n\n /**\n * collected inline tools with key of tool name\n */\n const result = {};\n\n tools.forEach(([name, tool]) => result[name] = tool);\n\n /**\n * Cache prepared Tools\n */\n this._inlineTools = result;\n\n return this._inlineTools;\n }\n\n /**\n * Return editor block tools\n */\n public get blockTools(): {[name: string]: BlockToolConstructable} {\n // eslint-disable-next-line no-unused-vars\n const tools = Object.entries(this.available).filter( ([name, tool]) => {\n return !tool[this.apiSettings.IS_INLINE];\n });\n\n /**\n * collected block tools with key of tool name\n */\n const result = {};\n\n tools.forEach(([name, tool]) => result[name] = tool);\n\n return result;\n }\n\n /**\n * Constant for available Tools Settings\n * @return {object}\n */\n public get apiSettings() {\n return {\n CONFIG: 'config',\n IS_CONTENTLESS: 'contentless',\n IS_DISPLAYED_IN_TOOLBOX: 'displayInToolbox',\n IS_ENABLED_INLINE_TOOLBAR: 'inlineToolbar',\n IS_ENABLED_LINE_BREAKS: 'enableLineBreaks',\n IS_INLINE: 'isInline',\n IS_IRREPLACEBLE_TOOL: 'irreplaceable',\n IS_PASTE_DISALLOWED: 'disallowPaste',\n SHORTCUT: 'shortcut',\n TOOLBAR_ICON: 'toolboxIcon',\n SANITIZE_CONFIG: 'sanitize',\n };\n }\n\n /**\n * Map {name: Class, ...} where:\n * name — block type name in JSON. Got from EditorConfig.tools keys\n * @type {Object}\n */\n public readonly toolsClasses: {[name: string]: ToolConstructable} = {};\n\n /**\n * Tools` classes available to use\n */\n private readonly toolsAvailable: {[name: string]: ToolConstructable} = {};\n\n /**\n * Tools` classes not availbale to use beacause of preparation failure\n */\n private readonly toolsUnavailable: {[name: string]: ToolConstructable} = {};\n\n /**\n * Tools settings in a map {name: settings, ...}\n * @type {Object}\n */\n private readonly toolsSettings: {[name: string]: ToolSettings} = {};\n\n /**\n * Cache for the prepared inline tools\n * @type {null|object}\n * @private\n */\n private _inlineTools: {[name: string]: ToolConstructable} = {};\n\n /**\n * @constructor\n *\n * @param {EditorConfig} config\n */\n constructor({config}) {\n super({config});\n\n this.toolsClasses = {};\n\n this.toolsSettings = {};\n\n /**\n * Available tools list\n * {name: Class, ...}\n * @type {Object}\n */\n this.toolsAvailable = {};\n\n /**\n * Tools that rejected a prepare method\n * {name: Class, ... }\n * @type {Object}\n */\n this.toolsUnavailable = {};\n\n this._inlineTools = null;\n }\n\n /**\n * Creates instances via passed or default configuration\n * @return {Promise}\n */\n public prepare() {\n /**\n * Assign internal tools\n */\n Object.assign(this.config.tools, this.internalTools);\n\n if (!this.config.hasOwnProperty('tools') || Object.keys(this.config.tools).length === 0) {\n throw Error('Can\\'t start without tools');\n }\n\n /**\n * Save Tools settings to a map\n */\n for (const toolName in this.config.tools) {\n /**\n * If Tool is an object not a Tool's class then\n * save class and settings separately\n */\n if (typeof this.config.tools[toolName] === 'object') {\n /**\n * Save Tool's class from 'class' field\n * @type {Tool}\n */\n this.toolsClasses[toolName] = (this.config.tools[toolName] as ToolSettings).class;\n\n /**\n * Save Tool's settings\n * @type {ToolSettings}\n */\n this.toolsSettings[toolName] = this.config.tools[toolName] as ToolSettings;\n\n /**\n * Remove Tool's class from settings\n */\n delete this.toolsSettings[toolName].class;\n } else {\n /**\n * Save Tool's class\n * @type {Tool}\n */\n this.toolsClasses[toolName] = this.config.tools[toolName] as ToolConstructable;\n\n /**\n * Set empty settings for Block by default\n * @type {{}}\n */\n this.toolsSettings[toolName] = {class: this.config.tools[toolName] as ToolConstructable};\n }\n }\n\n /**\n * getting classes that has prepare method\n */\n const sequenceData = this.getListOfPrepareFunctions();\n\n /**\n * if sequence data contains nothing then resolve current chain and run other module prepare\n */\n if (sequenceData.length === 0) {\n return Promise.resolve();\n }\n\n /**\n * to see how it works {@link Util#sequence}\n */\n return _.sequence(sequenceData, (data: any) => {\n this.success(data);\n }, (data) => {\n this.fallback(data);\n });\n }\n\n /**\n * @param {ChainData.data} data - append tool to available list\n */\n public success(data) {\n this.toolsAvailable[data.toolName] = this.toolsClasses[data.toolName];\n }\n\n /**\n * @param {ChainData.data} data - append tool to unavailable list\n */\n public fallback(data) {\n this.toolsUnavailable[data.toolName] = this.toolsClasses[data.toolName];\n }\n\n /**\n * Return Tool`s instance\n *\n * @param {String} tool — tool name\n * @param {BlockToolData} data — initial data\n * @return {BlockTool}\n */\n public construct(tool, data) {\n const plugin = this.toolsClasses[tool];\n\n /**\n * Configuration to be passed to the Tool's constructor\n */\n const config = this.toolsSettings[tool][this.apiSettings.CONFIG];\n\n /**\n * @type {{api: API, config: ({}), data: BlockToolData}}\n */\n const constructorOptions = {\n api: this.Editor.API.methods,\n config: config || {},\n data,\n };\n\n return new plugin(constructorOptions);\n }\n\n /**\n * Return Inline Tool's instance\n *\n * @param {InlineTool} tool\n * @return {InlineTool} — instance\n */\n public constructInline(tool) {\n /**\n * @type {{api: API}}\n */\n const constructorOptions = {\n api: this.Editor.API.methods,\n };\n\n return new tool(constructorOptions);\n }\n\n /**\n * Check if passed Tool is an instance of Initial Block Tool\n * @param {Tool} tool - Tool to check\n * @return {Boolean}\n */\n public isInitial(tool) {\n return tool instanceof this.available[this.config.initialBlock];\n }\n\n /**\n * Return Tool's config by name\n * @param {string} toolName\n * @return {ToolSettings}\n */\n public getToolSettings(toolName) {\n return this.toolsSettings[toolName];\n }\n\n /**\n * Binds prepare function of plugins with user or default config\n * @return {Array} list of functions that needs to be fired sequentially\n */\n private getListOfPrepareFunctions(): Array<{\n function: (data: {toolName: string, config: ToolConfig}) => void,\n data: {toolName: string, config: ToolConfig},\n }> {\n const toolPreparationList: Array<{\n function: (data: {toolName: string, config: ToolConfig}) => void,\n data: {toolName: string, config: ToolConfig}}\n > = [];\n\n for (const toolName in this.toolsClasses) {\n if (this.toolsClasses.hasOwnProperty(toolName)) {\n const toolClass = this.toolsClasses[toolName];\n\n if (typeof toolClass.prepare === 'function') {\n toolPreparationList.push({\n function: toolClass.prepare,\n data: {\n toolName,\n config: this.toolsSettings[toolName][this.apiSettings.CONFIG],\n },\n });\n } else {\n /**\n * If Tool hasn't a prepare method, mark it as available\n */\n this.toolsAvailable[toolName] = toolClass;\n }\n }\n }\n\n return toolPreparationList;\n }\n\n /**\n * Returns internal tools\n * Includes Bold, Italic, Link and Paragraph\n */\n get internalTools() {\n return {\n bold: BoldInlineTool,\n italic: ItalicInlineTool,\n link: LinkInlineTool,\n paragraph: {\n class: Paragraph,\n inlineToolbar: true,\n },\n };\n }\n}\n","/**\r\n * Prebuilded sprite of SVG icons\r\n */\r\nimport sprite from '../../../build/sprite.svg';\r\n\r\n/**\r\n * Module UI\r\n *\r\n * @type {UI}\r\n */\r\nimport Module from '../__module';\r\nimport $ from '../dom';\r\nimport _ from '../utils';\r\n\r\nimport Selection from '../selection';\r\nimport {ModuleConfig} from '../../types-internal/module-config';\r\n\r\n/**\r\n * @class\r\n *\r\n * @classdesc Makes CodeX Editor UI:\r\n * <codex-editor>\r\n * <ce-redactor />\r\n * <ce-toolbar />\r\n * <ce-inline-toolbar />\r\n * </codex-editor>\r\n *\r\n * @typedef {UI} UI\r\n * @property {EditorConfig} config - editor configuration {@link CodexEditor#configuration}\r\n * @property {Object} Editor - available editor modules {@link CodexEditor#moduleInstances}\r\n * @property {Object} nodes -\r\n * @property {Element} nodes.holder - element where we need to append redactor\r\n * @property {Element} nodes.wrapper - <codex-editor>\r\n * @property {Element} nodes.redactor - <ce-redactor>\r\n */\r\nexport default class UI extends Module {\r\n\r\n /**\r\n * CodeX Editor UI CSS class names\r\n * @return {{editorWrapper: string, editorZone: string}}\r\n */\r\n private get CSS(): {editorWrapper: string, editorZone: string} {\r\n return {\r\n editorWrapper : 'codex-editor',\r\n editorZone : 'codex-editor__redactor',\r\n };\r\n }\r\n\r\n /**\r\n * HTML Elements used for UI\r\n */\r\n public nodes: {[key: string]: HTMLElement} = {\r\n holder: null,\r\n wrapper: null,\r\n redactor: null,\r\n };\r\n\r\n /**\r\n * Making main interface\r\n */\r\n public async prepare(): Promise<void> {\r\n await this.make();\r\n\r\n /**\r\n * Append SVG sprite\r\n */\r\n await this.appendSVGSprite();\r\n\r\n /**\r\n * Make toolbar\r\n */\r\n await this.Editor.Toolbar.make();\r\n\r\n /**\r\n * Make the Inline toolbar\r\n */\r\n await this.Editor.InlineToolbar.make();\r\n\r\n /**\r\n * Load and append CSS\r\n */\r\n await this.loadStyles();\r\n\r\n /**\r\n * Bind events for the UI elements\r\n */\r\n await this.bindEvents();\r\n }\r\n\r\n /**\r\n * Clean editor`s UI\r\n */\r\n public destroy(): void {\r\n this.nodes.holder.innerHTML = '';\r\n }\r\n\r\n /**\r\n * Makes CodeX Editor interface\r\n * @return {Promise<void>}\r\n */\r\n private async make(): Promise<void> {\r\n /**\r\n * Element where we need to append CodeX Editor\r\n * @type {Element}\r\n */\r\n this.nodes.holder = document.getElementById(this.config.holderId);\r\n\r\n if (!this.nodes.holder) {\r\n throw Error('Holder wasn\\'t found by ID: #' + this.config.holderId);\r\n }\r\n\r\n /**\r\n * Create and save main UI elements\r\n */\r\n this.nodes.wrapper = $.make('div', this.CSS.editorWrapper);\r\n this.nodes.redactor = $.make('div', this.CSS.editorZone);\r\n\r\n this.nodes.wrapper.appendChild(this.nodes.redactor);\r\n this.nodes.holder.appendChild(this.nodes.wrapper);\r\n }\r\n\r\n /**\r\n * Appends CSS\r\n */\r\n private loadStyles(): void {\r\n /**\r\n * Load CSS\r\n */\r\n const styles = require('../../styles/main.css');\r\n\r\n /**\r\n * Make tag\r\n */\r\n const tag = $.make('style', null, {\r\n textContent: styles.toString(),\r\n });\r\n\r\n /**\r\n * Append styles at the top of HEAD tag\r\n */\r\n $.prepend(document.head, tag);\r\n }\r\n\r\n /**\r\n * Bind events on the CodeX Editor interface\r\n */\r\n private bindEvents(): void {\r\n this.Editor.Listeners.on(\r\n this.nodes.redactor,\r\n 'click',\r\n (event) => this.redactorClicked(event as MouseEvent),\r\n false,\r\n );\r\n this.Editor.Listeners.on(document, 'keydown', (event) => this.documentKeydown(event as KeyboardEvent), true );\r\n this.Editor.Listeners.on(document, 'click', (event) => this.documentClicked(event as MouseEvent), false );\r\n }\r\n\r\n /**\r\n * All keydowns on document\r\n * @param {Event} event\r\n */\r\n private documentKeydown(event: KeyboardEvent): void {\r\n switch (event.keyCode) {\r\n case _.keyCodes.ENTER:\r\n this.enterPressed(event);\r\n break;\r\n default:\r\n this.defaultBehaviour(event);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Ignore all other document's keydown events\r\n * @param {KeyboardEvent} event\r\n */\r\n private defaultBehaviour(event: KeyboardEvent): void {\r\n const keyDownOnEditor = (event.target as HTMLElement).closest(`.${this.CSS.editorWrapper}`);\r\n\r\n /**\r\n * Ignore keydowns on document\r\n * clear pointer and close toolbar\r\n */\r\n if (!keyDownOnEditor) {\r\n /**\r\n * Remove all highlights and remove caret\r\n */\r\n this.Editor.BlockManager.dropPointer();\r\n\r\n /**\r\n * Close Toolbar\r\n */\r\n this.Editor.Toolbar.close();\r\n }\r\n }\r\n\r\n /**\r\n * Enter pressed on document\r\n * @param event\r\n */\r\n private enterPressed(event: KeyboardEvent): void {\r\n const hasPointerToBlock = this.Editor.BlockManager.currentBlockIndex >= 0;\r\n\r\n /**\r\n * If Caret is not set anywhere, event target on Enter is always Element that we handle\r\n * In our case it is document.body\r\n *\r\n * So, BlockManager points some Block and Enter press is on Body\r\n * We can create a new block\r\n */\r\n if (hasPointerToBlock && (event.target as HTMLElement).tagName === 'BODY') {\r\n /**\r\n * Insert initial typed Block\r\n */\r\n const newBlock = this.Editor.BlockManager.insert();\r\n\r\n this.Editor.Caret.setToBlock(newBlock);\r\n\r\n /**\r\n * And highlight\r\n */\r\n this.Editor.BlockManager.highlightCurrentNode();\r\n\r\n /**\r\n * Move toolbar and show plus button because new Block is empty\r\n */\r\n this.Editor.Toolbar.move();\r\n this.Editor.Toolbar.plusButton.show();\r\n }\r\n\r\n this.Editor.BlockSelection.clearSelection();\r\n }\r\n\r\n /**\r\n * All clicks on document\r\n * @param {MouseEvent} event - Click\r\n */\r\n private documentClicked(event: MouseEvent): void {\r\n /**\r\n * Close Inline Toolbar when nothing selected\r\n * Do not fire check on clicks at the Inline Toolbar buttons\r\n */\r\n const target = event.target as HTMLElement;\r\n const clickedOnInlineToolbarButton = target.closest(`.${this.Editor.InlineToolbar.CSS.inlineToolbar}`);\r\n const clickedInsideofEditor = target.closest(`.${this.CSS.editorWrapper}`);\r\n\r\n /** Clear highlightings and pointer on BlockManager */\r\n if (!clickedInsideofEditor && !Selection.isAtEditor) {\r\n this.Editor.BlockManager.dropPointer();\r\n this.Editor.Toolbar.close();\r\n }\r\n\r\n if (!clickedOnInlineToolbarButton) {\r\n this.Editor.InlineToolbar.handleShowingEvent(event);\r\n }\r\n\r\n if (Selection.isAtEditor) {\r\n this.Editor.BlockManager.setCurrentBlockByChildNode(Selection.anchorNode);\r\n }\r\n\r\n /** Clear selection */\r\n this.Editor.BlockSelection.clearSelection();\r\n }\r\n\r\n /**\r\n * All clicks on the redactor zone\r\n *\r\n * @param {MouseEvent} event\r\n *\r\n * @description\r\n * 1. Save clicked Block as a current {@link BlockManager#currentNode}\r\n * it uses for the following:\r\n * - add CSS modifier for the selected Block\r\n * - on Enter press, we make a new Block under that\r\n *\r\n * 2. Move and show the Toolbar\r\n *\r\n * 3. Set a Caret\r\n *\r\n * 4. By clicks on the Editor's bottom zone:\r\n * - if last Block is empty, set a Caret to this\r\n * - otherwise, add a new empty Block and set a Caret to that\r\n *\r\n * 5. Hide the Inline Toolbar\r\n *\r\n * @see selectClickedBlock\r\n *\r\n */\r\n private redactorClicked(event: MouseEvent): void {\r\n const clickedNode = event.target as HTMLElement;\r\n\r\n /**\r\n * Select clicked Block as Current\r\n */\r\n try {\r\n /**\r\n * Renew Current Block\r\n */\r\n this.Editor.BlockManager.setCurrentBlockByChildNode(clickedNode);\r\n\r\n /**\r\n * Highlight Current Node\r\n */\r\n this.Editor.BlockManager.highlightCurrentNode();\r\n } catch (e) {\r\n /**\r\n * If clicked outside first-level Blocks, set Caret to the last empty Block\r\n */\r\n this.Editor.Caret.setToTheLastBlock();\r\n }\r\n\r\n event.stopImmediatePropagation();\r\n event.stopPropagation();\r\n\r\n /**\r\n * Move and open toolbar\r\n */\r\n this.Editor.Toolbar.open();\r\n\r\n /**\r\n * Hide the Plus Button\r\n */\r\n this.Editor.Toolbar.plusButton.hide();\r\n\r\n if (!this.Editor.BlockManager.currentBlock) {\r\n this.Editor.BlockManager.insert();\r\n }\r\n\r\n /**\r\n * Show the Plus Button if:\r\n * - Block is an initial-block (Text)\r\n * - Block is empty\r\n */\r\n const isInitialBlock = this.Editor.Tools.isInitial(this.Editor.BlockManager.currentBlock.tool),\r\n isEmptyBlock = this.Editor.BlockManager.currentBlock.isEmpty;\r\n\r\n if (isInitialBlock && isEmptyBlock) {\r\n this.Editor.Toolbar.plusButton.show();\r\n }\r\n\r\n /** Clear selection */\r\n this.Editor.BlockSelection.clearSelection();\r\n }\r\n\r\n /**\r\n * Append prebuilded sprite with SVG icons\r\n */\r\n private appendSVGSprite(): void {\r\n const spriteHolder = $.make('div');\r\n\r\n spriteHolder.hidden = true;\r\n spriteHolder.style.display = 'none';\r\n spriteHolder.innerHTML = sprite;\r\n\r\n $.append(this.nodes.wrapper, spriteHolder);\r\n }\r\n}\r\n","'use strict';\r\n\r\n/**\r\n * Extend Element interface to include prefixed and experimental properties\r\n */\r\ninterface Element {\r\n matchesSelector: (selector: string) => boolean;\r\n mozMatchesSelector: (selector: string) => boolean;\r\n oMatchesSelector: (selector: string) => boolean;\r\n\r\n prepend: (nodes: Node|Node[]|any) => void;\r\n append: (nodes: Node|Node[]|DocumentFragment|void) => void;\r\n}\r\n\r\n/**\r\n * The Element.matches() method returns true if the element\r\n * would be selected by the specified selector string;\r\n * otherwise, returns false.\r\n *\r\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill}\r\n */\r\nif (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.matchesSelector ||\r\n Element.prototype.mozMatchesSelector ||\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.oMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector ||\r\n function(s) {\r\n const matches = (this.document || this.ownerDocument).querySelectorAll(s);\r\n let i = matches.length;\r\n\r\n while (--i >= 0 && matches.item(i) !== this) {\r\n }\r\n\r\n return i > -1;\r\n };\r\n}\r\n\r\n/**\r\n * The Element.closest() method returns the closest ancestor\r\n * of the current element (or the current element itself) which\r\n * matches the selectors given in parameter.\r\n * If there isn't such an ancestor, it returns null.\r\n *\r\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill}\r\n */\r\nif (!Element.prototype.closest) {\r\n Element.prototype.closest = function(s) {\r\n let el = this;\r\n\r\n if (!document.documentElement.contains(el)) {\r\n return null;\r\n }\r\n\r\n do {\r\n if (el.matches(s)) {\r\n return el;\r\n }\r\n\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null);\r\n\r\n return null;\r\n };\r\n}\r\n\r\n/**\r\n * The ParentNode.prepend method inserts a set of Node objects\r\n * or DOMString objects before the first child of the ParentNode.\r\n * DOMString objects are inserted as equivalent Text nodes.\r\n *\r\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/prepend#Polyfill}\r\n */\r\nif (!Element.prototype.prepend) {\r\n Element.prototype.prepend = function prepend(nodes: Node|Node[]|any) {\r\n const docFrag = document.createDocumentFragment();\r\n\r\n if (!Array.isArray(nodes)) {\r\n nodes = [ nodes ];\r\n }\r\n\r\n nodes.forEach((node: Node|any) => {\r\n const isNode = node instanceof Node;\r\n\r\n docFrag.appendChild(isNode ? node : document.createTextNode(String(node)));\r\n });\r\n\r\n this.insertBefore(docFrag, this.firstChild);\r\n };\r\n}\r\n","/**\r\n * TextRange interface fot IE9-\r\n */\r\nimport _ from './utils';\r\n\r\ninterface TextRange {\r\n boundingTop: number;\r\n boundingLeft: number;\r\n boundingBottom: number;\r\n boundingRight: number;\r\n boundingHeight: number;\r\n boundingWidth: number;\r\n}\r\n\r\n/**\r\n * Interface for object returned by document.selection in IE9-\r\n */\r\ninterface MSSelection {\r\n createRange: () => TextRange;\r\n type: string;\r\n}\r\n\r\n/**\r\n * Extends Document interface for IE9-\r\n */\r\ninterface Document {\r\n selection?: MSSelection;\r\n}\r\n\r\n/**\r\n * Working with selection\r\n * @typedef {SelectionUtils} SelectionUtils\r\n */\r\nexport default class SelectionUtils {\r\n\r\n /**\r\n * Editor styles\r\n * @return {{editorWrapper: string, editorZone: string}}\r\n */\r\n static get CSS(): {editorWrapper: string, editorZone: string} {\r\n return {\r\n editorWrapper : 'codex-editor',\r\n editorZone : 'codex-editor__redactor',\r\n };\r\n }\r\n\r\n /**\r\n * Returns selected anchor\r\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Selection/anchorNode}\r\n * @return {Node|null}\r\n */\r\n static get anchorNode(): Node|null {\r\n const selection = window.getSelection();\r\n\r\n return selection ? selection.anchorNode : null;\r\n }\r\n\r\n /**\r\n * Returns selection offset according to the anchor node\r\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Selection/anchorOffset}\r\n * @return {Number|null}\r\n */\r\n static get anchorOffset(): number|null {\r\n const selection = window.getSelection();\r\n\r\n return selection ? selection.anchorOffset : null;\r\n }\r\n\r\n /**\r\n * Is current selection range collapsed\r\n * @return {boolean|null}\r\n */\r\n static get isCollapsed(): boolean|null {\r\n const selection = window.getSelection();\r\n\r\n return selection ? selection.isCollapsed : null;\r\n }\r\n\r\n /**\r\n * Check current selection if it is at Editor's zone\r\n * @return {boolean}\r\n */\r\n static get isAtEditor(): boolean {\r\n const selection = SelectionUtils.get();\r\n\r\n /**\r\n * Something selected on document\r\n */\r\n let selectedNode = (selection.anchorNode || selection.focusNode) as HTMLElement;\r\n\r\n if (selectedNode && selectedNode.nodeType === Node.TEXT_NODE) {\r\n selectedNode = selectedNode.parentNode as HTMLElement;\r\n }\r\n\r\n let editorZone = null;\r\n if (selectedNode) {\r\n editorZone = selectedNode.closest(`.${SelectionUtils.CSS.editorZone}`);\r\n }\r\n\r\n /**\r\n * SelectionUtils is not out of Editor because Editor's wrapper was found\r\n */\r\n return editorZone && editorZone.nodeType === Node.ELEMENT_NODE;\r\n }\r\n\r\n /**\r\n * Return first range\r\n * @return {Range|null}\r\n */\r\n static get range(): Range {\r\n const selection = window.getSelection();\r\n\r\n return selection && selection.rangeCount ? selection.getRangeAt(0) : null;\r\n }\r\n\r\n /**\r\n * Calculates position and size of selected text\r\n * @return {{x, y, width, height, top?, left?, bottom?, right?}}\r\n */\r\n static get rect(): DOMRect|ClientRect {\r\n let sel: Selection|MSSelection = (document as Document).selection,\r\n range: TextRange|Range;\r\n\r\n let rect = {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n } as DOMRect;\r\n\r\n if (sel && sel.type !== 'Control') {\r\n sel = sel as MSSelection;\r\n range = sel.createRange() as TextRange;\r\n rect.x = range.boundingLeft;\r\n rect.y = range.boundingTop;\r\n rect.width = range.boundingWidth;\r\n rect.height = range.boundingHeight;\r\n\r\n return rect;\r\n }\r\n\r\n if (!window.getSelection) {\r\n _.log('Method window.getSelection is not supported', 'warn');\r\n return rect;\r\n }\r\n\r\n sel = window.getSelection();\r\n\r\n if (!sel.rangeCount) {\r\n _.log('Method SelectionUtils.rangeCount() is not supported', 'warn');\r\n return rect;\r\n }\r\n\r\n range = sel.getRangeAt(0).cloneRange() as Range;\r\n\r\n if (range.getBoundingClientRect) {\r\n rect = range.getBoundingClientRect() as DOMRect;\r\n }\r\n // Fall back to inserting a temporary element\r\n if (rect.x === 0 && rect.y === 0) {\r\n const span = document.createElement('span');\r\n\r\n if (span.getBoundingClientRect) {\r\n // Ensure span has dimensions and position by\r\n // adding a zero-width space character\r\n span.appendChild( document.createTextNode('\\u200b') );\r\n range.insertNode(span);\r\n rect = span.getBoundingClientRect() as DOMRect;\r\n\r\n const spanParent = span.parentNode;\r\n\r\n spanParent.removeChild(span);\r\n\r\n // Glue any broken text nodes back together\r\n spanParent.normalize();\r\n }\r\n }\r\n\r\n return rect;\r\n }\r\n\r\n /**\r\n * Returns selected text as String\r\n * @returns {string}\r\n */\r\n static get text(): string {\r\n return window.getSelection ? window.getSelection().toString() : '';\r\n }\r\n\r\n /**\r\n * Returns window SelectionUtils\r\n * {@link https://developer.mozilla.org/ru/docs/Web/API/Window/getSelection}\r\n * @return {Selection}\r\n */\r\n public static get(): Selection {\r\n return window.getSelection();\r\n }\r\n\r\n public instance: Selection = null;\r\n public selection: Selection = null;\r\n\r\n /**\r\n * This property can store SelectionUtils's range for restoring later\r\n * @type {Range|null}\r\n */\r\n public savedSelectionRange: Range = null;\r\n\r\n /**\r\n * Save SelectionUtils's range\r\n */\r\n public save(): void {\r\n this.savedSelectionRange = SelectionUtils.range;\r\n }\r\n\r\n /**\r\n * Restore saved SelectionUtils's range\r\n */\r\n public restore(): void {\r\n if (!this.savedSelectionRange) {\r\n return;\r\n }\r\n\r\n const sel = window.getSelection();\r\n\r\n sel.removeAllRanges();\r\n sel.addRange(this.savedSelectionRange);\r\n }\r\n\r\n /**\r\n * Clears saved selection\r\n */\r\n public clearSaved(): void {\r\n this.savedSelectionRange = null;\r\n }\r\n\r\n /**\r\n * Looks ahead to find passed tag from current selection\r\n *\r\n * @param {String} tagName - tag to found\r\n * @param {String} [className] - tag's class name\r\n * @param {Number} [searchDepth] - count of tags that can be included. For better performance.\r\n * @return {HTMLElement|null}\r\n */\r\n public findParentTag(tagName: string, className?: string, searchDepth = 10): HTMLElement|null {\r\n const selection = window.getSelection();\r\n let parentTag = null;\r\n\r\n /**\r\n * If selection is missing or no anchorNode or focusNode were found then return null\r\n */\r\n if (!selection || !selection.anchorNode || !selection.focusNode) {\r\n return null;\r\n }\r\n\r\n /**\r\n * Define Nodes for start and end of selection\r\n */\r\n const boundNodes = [\r\n /** the Node in which the selection begins */\r\n selection.anchorNode as HTMLElement,\r\n /** the Node in which the selection ends */\r\n selection.focusNode as HTMLElement,\r\n ];\r\n\r\n /**\r\n * For each selection parent Nodes we try to find target tag [with target class name]\r\n * It would be saved in parentTag variable\r\n */\r\n boundNodes.forEach((parent) => {\r\n /** Reset tags limit */\r\n let searchDepthIterable = searchDepth;\r\n\r\n while (searchDepthIterable > 0 && parent.parentNode) {\r\n /**\r\n * Check tag's name\r\n */\r\n if (parent.tagName === tagName) {\r\n /**\r\n * Save the result\r\n */\r\n parentTag = parent;\r\n\r\n /**\r\n * Optional additional check for class-name mismatching\r\n */\r\n if (className && parent.classList && !parent.classList.contains(className)) {\r\n parentTag = null;\r\n }\r\n\r\n /**\r\n * If we have found required tag with class then go out from the cycle\r\n */\r\n if (parentTag) {\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Target tag was not found. Go up to the parent and check it\r\n */\r\n parent = parent.parentNode as HTMLElement;\r\n searchDepthIterable--;\r\n }\r\n });\r\n\r\n /**\r\n * Return found tag or null\r\n */\r\n return parentTag;\r\n }\r\n\r\n /**\r\n * Expands selection range to the passed parent node\r\n *\r\n * @param {HTMLElement} element\r\n */\r\n public expandToTag(element: HTMLElement): void {\r\n const selection = window.getSelection();\r\n\r\n selection.removeAllRanges();\r\n const range = document.createRange();\r\n\r\n range.selectNodeContents(element);\r\n selection.addRange(range);\r\n }\r\n}\r\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.Paragraph=e():t.Paragraph=e()}(window,function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"/\",n(n.s=0)}([function(t,e,n){\"use strict\";var r=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}();n(1).toString();\r\n/**\r\n * Base Paragraph Block for the CodeX Editor.\r\n * Represents simple paragraph\r\n *\r\n * @author CodeX (team@ifmo.su)\r\n * @copyright CodeX 2018\r\n * @license The MIT License (MIT)\r\n * @version 2.0.0\r\n */\r\nvar o=function(){function t(e){var n=e.data,r=(e.config,e.api);!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.api=r,this._CSS={block:this.api.styles.block,wrapper:\"ce-paragraph\"},this._data={},this._element=this.drawView(),this.data=n}return r(t,null,[{key:\"displayInToolbox\",get:function(){return!1}}]),r(t,[{key:\"drawView\",value:function(){var t=document.createElement(\"DIV\");return t.classList.add(this._CSS.wrapper,this._CSS.block),t.contentEditable=!0,t}},{key:\"render\",value:function(){return this._element}},{key:\"merge\",value:function(t){var e={text:this.data.text+t.text};this.data=e}},{key:\"validate\",value:function(t){return\"\"!==t.text.trim()}},{key:\"save\",value:function(t){return{text:t.innerHTML}}},{key:\"sanitize\",get:function(){return{text:{a:{href:!0,target:\"_blank\",rel:\"nofollow\"},b:{},i:{},br:!0,span:{class:\"inline-code\"},mark:{class:\"cdx-marker\"}}}}},{key:\"data\",get:function(){var t=this._element.innerHTML;return this._data.text=t,this._data},set:function(t){this._data=t||{},this._element.innerHTML=this._data.text||\"\"}}],[{key:\"onPaste\",get:function(){return{tags:[\"P\"],handler:function(t){return{text:t.innerHTML}}}}}]),t}();t.exports=o},function(t,e,n){var r=n(2);\"string\"==typeof r&&(r=[[t.i,r,\"\"]]);var o={hmr:!0,transform:void 0,insertInto:void 0};n(4)(r,o);r.locals&&(t.exports=r.locals)},function(t,e,n){(t.exports=n(3)(!1)).push([t.i,\".ce-paragraph {\\n line-height: 1.6em;\\n outline: none;\\n}\\n\\n.ce-paragraph p:first-of-type{\\n margin-top: 0;\\n}\\n\\n.ce-paragraph p:last-of-type{\\n margin-bottom: 0;\\n}\\n\",\"\"])},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||\"\",r=t[3];if(!r)return n;if(e&&\"function\"==typeof btoa){var o=function(t){return\"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+\" */\"}(r),i=r.sources.map(function(t){return\"/*# sourceURL=\"+r.sourceRoot+t+\" */\"});return[n].concat(i).concat([o]).join(\"\\n\")}return[n].join(\"\\n\")}(e,t);return e[2]?\"@media \"+e[2]+\"{\"+n+\"}\":n}).join(\"\")},e.i=function(t,n){\"string\"==typeof t&&(t=[[null,t,\"\"]]);for(var r={},o=0;o<this.length;o++){var i=this[o][0];\"number\"==typeof i&&(r[i]=!0)}for(o=0;o<t.length;o++){var a=t[o];\"number\"==typeof a[0]&&r[a[0]]||(n&&!a[2]?a[2]=n:n&&(a[2]=\"(\"+a[2]+\") and (\"+n+\")\"),e.push(a))}},e}},function(t,e,n){var r={},o=function(t){var e;return function(){return void 0===e&&(e=t.apply(this,arguments)),e}}(function(){return window&&document&&document.all&&!window.atob}),i=function(t){var e={};return function(t){if(\"function\"==typeof t)return t();if(void 0===e[t]){var n=function(t){return document.querySelector(t)}.call(this,t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(t){n=null}e[t]=n}return e[t]}}(),a=null,s=0,u=[],f=n(5);function c(t,e){for(var n=0;n<t.length;n++){var o=t[n],i=r[o.id];if(i){i.refs++;for(var a=0;a<i.parts.length;a++)i.parts[a](o.parts[a]);for(;a<o.parts.length;a++)i.parts.push(b(o.parts[a],e))}else{var s=[];for(a=0;a<o.parts.length;a++)s.push(b(o.parts[a],e));r[o.id]={id:o.id,refs:1,parts:s}}}}function l(t,e){for(var n=[],r={},o=0;o<t.length;o++){var i=t[o],a=e.base?i[0]+e.base:i[0],s={css:i[1],media:i[2],sourceMap:i[3]};r[a]?r[a].parts.push(s):n.push(r[a]={id:a,parts:[s]})}return n}function p(t,e){var n=i(t.insertInto);if(!n)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");var r=u[u.length-1];if(\"top\"===t.insertAt)r?r.nextSibling?n.insertBefore(e,r.nextSibling):n.appendChild(e):n.insertBefore(e,n.firstChild),u.push(e);else if(\"bottom\"===t.insertAt)n.appendChild(e);else{if(\"object\"!=typeof t.insertAt||!t.insertAt.before)throw new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");var o=i(t.insertInto+\" \"+t.insertAt.before);n.insertBefore(e,o)}}function d(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t);var e=u.indexOf(t);e>=0&&u.splice(e,1)}function h(t){var e=document.createElement(\"style\");return void 0===t.attrs.type&&(t.attrs.type=\"text/css\"),v(e,t.attrs),p(t,e),e}function v(t,e){Object.keys(e).forEach(function(n){t.setAttribute(n,e[n])})}function b(t,e){var n,r,o,i;if(e.transform&&t.css){if(!(i=e.transform(t.css)))return function(){};t.css=i}if(e.singleton){var u=s++;n=a||(a=h(e)),r=m.bind(null,n,u,!1),o=m.bind(null,n,u,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(n=function(t){var e=document.createElement(\"link\");return void 0===t.attrs.type&&(t.attrs.type=\"text/css\"),t.attrs.rel=\"stylesheet\",v(e,t.attrs),p(t,e),e}(e),r=function(t,e,n){var r=n.css,o=n.sourceMap,i=void 0===e.convertToAbsoluteUrls&&o;(e.convertToAbsoluteUrls||i)&&(r=f(r));o&&(r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+\" */\");var a=new Blob([r],{type:\"text/css\"}),s=t.href;t.href=URL.createObjectURL(a),s&&URL.revokeObjectURL(s)}.bind(null,n,e),o=function(){d(n),n.href&&URL.revokeObjectURL(n.href)}):(n=h(e),r=function(t,e){var n=e.css,r=e.media;r&&t.setAttribute(\"media\",r);if(t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}.bind(null,n),o=function(){d(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}t.exports=function(t,e){if(\"undefined\"!=typeof DEBUG&&DEBUG&&\"object\"!=typeof document)throw new Error(\"The style-loader cannot be used in a non-browser environment\");(e=e||{}).attrs=\"object\"==typeof e.attrs?e.attrs:{},e.singleton||\"boolean\"==typeof e.singleton||(e.singleton=o()),e.insertInto||(e.insertInto=\"head\"),e.insertAt||(e.insertAt=\"bottom\");var n=l(t,e);return c(n,e),function(t){for(var o=[],i=0;i<n.length;i++){var a=n[i];(s=r[a.id]).refs--,o.push(s)}t&&c(l(t,e),e);for(i=0;i<o.length;i++){var s;if(0===(s=o[i]).refs){for(var u=0;u<s.parts.length;u++)s.parts[u]();delete r[s.id]}}}};var y=function(){var t=[];return function(e,n){return t[e]=n,t.filter(Boolean).join(\"\\n\")}}();function m(t,e,n,r){var o=n?\"\":r.css;if(t.styleSheet)t.styleSheet.cssText=y(e,o);else{var i=document.createTextNode(o),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}},function(t,e){t.exports=function(t){var e=\"undefined\"!=typeof window&&window.location;if(!e)throw new Error(\"fixUrls requires window.location\");if(!t||\"string\"!=typeof t)return t;var n=e.protocol+\"//\"+e.host,r=n+e.pathname.replace(/\\/[^\\/]*$/,\"/\");return t.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi,function(t,e){var o,i=e.trim().replace(/^\"(.*)\"$/,function(t,e){return e}).replace(/^'(.*)'$/,function(t,e){return e});return/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(i)?t:(o=0===i.indexOf(\"//\")?i:0===i.indexOf(\"/\")?n+i:r+i.replace(/^\\.\\//,\"\"),\"url(\"+JSON.stringify(o)+\")\")})}}])});","/**\r\n * Class Util\r\n */\r\n\r\nimport Dom from './dom';\r\n\r\n/**\r\n * @typedef {Object} ChainData\r\n * @property {Object} data - data that will be passed to the success or fallback\r\n * @property {Function} function - function's that must be called asynchronically\r\n */\r\nexport interface ChainData {\r\n data?: any;\r\n function: (...args: any[]) => any;\r\n}\r\n\r\n/**\r\n * Codex Editor Util\r\n */\r\nexport default class Util {\r\n /**\r\n * Custom logger\r\n *\r\n * @param {string} msg - message\r\n * @param {string} type - logging type 'log'|'warn'|'error'|'info'\r\n * @param {*} args - argument to log with a message\r\n */\r\n public static log(msg: string, type: string = 'log', args?: any): void {\r\n\r\n if (!args) {\r\n if (['time', 'timeEnd'].includes(type)) {\r\n msg = `[codex-editor]: ${msg}`;\r\n } else {\r\n args = msg || 'undefined';\r\n msg = '[codex-editor]: %o';\r\n }\r\n } else {\r\n msg = '[codex-editor]: ' + msg;\r\n }\r\n\r\n try {\r\n if ( 'console' in window && window.console[ type ] ) {\r\n if ( args ) { window.console[ type ]( msg, args ); } else { window.console[ type ]( msg ); }\r\n }\r\n } catch (e) {\r\n // do nothing\r\n }\r\n }\r\n\r\n /**\r\n * Returns basic keycodes as constants\r\n * @return {{}}\r\n */\r\n static get keyCodes() {\r\n return {\r\n BACKSPACE: 8,\r\n TAB: 9,\r\n ENTER: 13,\r\n SHIFT: 16,\r\n CTRL: 17,\r\n ALT: 18,\r\n ESC: 27,\r\n SPACE: 32,\r\n LEFT: 37,\r\n UP: 38,\r\n DOWN: 40,\r\n RIGHT: 39,\r\n DELETE: 46,\r\n META: 91,\r\n };\r\n }\r\n\r\n /**\r\n * Fires a promise sequence asyncronically\r\n *\r\n * @param {ChainData[]} chains - list or ChainData's\r\n * @param {Function} success - success callback\r\n * @param {Function} fallback - callback that fires in case of errors\r\n *\r\n * @return {Promise}\r\n */\r\n public static async sequence(\r\n chains: ChainData[],\r\n success: (data: any) => void = () => {},\r\n fallback: (data: any) => void = () => {},\r\n ): Promise<void> {\r\n /**\r\n * Decorator\r\n *\r\n * @param {ChainData} chainData\r\n *\r\n * @param {Function} successCallback\r\n * @param {Function} fallbackCallback\r\n *\r\n * @return {Promise}\r\n */\r\n async function waitNextBlock(\r\n chainData: ChainData,\r\n successCallback: (data: any) => void,\r\n fallbackCallback: (data: any) => void,\r\n ): Promise<void> {\r\n try {\r\n await chainData.function(chainData.data);\r\n await successCallback(typeof chainData.data !== 'undefined' ? chainData.data : {});\r\n } catch (e) {\r\n fallbackCallback(typeof chainData.data !== 'undefined' ? chainData.data : {});\r\n }\r\n }\r\n\r\n /**\r\n * pluck each element from queue\r\n * First, send resolved Promise as previous value\r\n * Each plugins \"prepare\" method returns a Promise, that's why\r\n * reduce current element will not be able to continue while can't get\r\n * a resolved Promise\r\n */\r\n return await chains.reduce(async (previousValue, currentValue) => {\r\n await previousValue;\r\n return waitNextBlock(currentValue, success, fallback);\r\n }, Promise.resolve());\r\n }\r\n\r\n /**\r\n * Make array from array-like collection\r\n *\r\n * @param {ArrayLike} collection\r\n *\r\n * @return {Array}\r\n */\r\n public static array(collection: ArrayLike<any>): any[] {\r\n return Array.prototype.slice.call(collection);\r\n }\r\n\r\n /**\r\n * Check if passed variable is a function\r\n * @param {*} fn\r\n * @return {boolean}\r\n */\r\n public static isFunction(fn: any): boolean {\r\n return typeof fn === 'function';\r\n }\r\n\r\n /**\r\n * Check if passed function is a class\r\n * @param {function} fn\r\n * @return {boolean}\r\n */\r\n public static isClass(fn: any): boolean {\r\n return typeof fn === 'function' && /^\\s*class\\s+/.test(fn.toString());\r\n }\r\n\r\n /**\r\n * Checks if object is empty\r\n *\r\n * @param {Object} object\r\n * @return {boolean}\r\n */\r\n public static isEmpty(object: object): boolean {\r\n return Object.keys(object).length === 0 && object.constructor === Object;\r\n }\r\n\r\n /**\r\n * Check if passed object is a Promise\r\n * @param {*} object - object to check\r\n * @return {Boolean}\r\n */\r\n public static isPromise(object: any): boolean {\r\n return Promise.resolve(object) === object;\r\n }\r\n\r\n /**\r\n * Check if passed element is contenteditable\r\n * @param {HTMLElement} element\r\n * @return {boolean}\r\n */\r\n public static isContentEditable(element: HTMLElement): boolean {\r\n return element.contentEditable === 'true';\r\n }\r\n\r\n /**\r\n * Delays method execution\r\n *\r\n * @param {Function} method\r\n * @param {Number} timeout\r\n */\r\n public static delay(method: (...args: any[]) => any, timeout: number) {\r\n return function() {\r\n const context = this,\r\n args = arguments;\r\n\r\n window.setTimeout(() => method.apply(context, args), timeout);\r\n };\r\n }\r\n\r\n /**\r\n * Get file extension\r\n *\r\n * @param {File} file\r\n * @return string\r\n */\r\n public static getFileExtension(file: File): string {\r\n return file.name.split('.').pop();\r\n }\r\n\r\n /**\r\n * Check if string is MIME type\r\n *\r\n * @param {string} type\r\n * @return boolean\r\n */\r\n public static isValidMimeType(type: string): boolean {\r\n return /^[-\\w]+\\/([-+\\w]+|\\*)$/.test(type);\r\n }\r\n\r\n /**\r\n * Debouncing method\r\n * Call method after passed time\r\n *\r\n * Note that this method returns Function and declared variable need to be called\r\n *\r\n * @param {Function} func - function that we're throttling\r\n * @param {Number} wait - time in milliseconds\r\n * @param {Boolean} immediate - call now\r\n * @return {Function}\r\n */\r\n public static debounce(func: () => void, wait?: number , immediate?: boolean): () => void {\r\n let timeout;\r\n\r\n return () => {\r\n const context = this,\r\n args = arguments;\r\n\r\n const later = () => {\r\n timeout = null;\r\n if (!immediate) {\r\n func.apply(context, args);\r\n }\r\n };\r\n\r\n const callNow = immediate && !timeout;\r\n\r\n window.clearTimeout(timeout);\r\n timeout = window.setTimeout(later, wait);\r\n if (callNow) {\r\n func.apply(context, args);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Copies passed text to the clipboard\r\n * @param text\r\n */\r\n public static copyTextToClipboard(text) {\r\n const el = Dom.make('div', 'codex-editor-clipboard', {\r\n innerHTML: text,\r\n });\r\n\r\n document.body.appendChild(el);\r\n\r\n const selection = window.getSelection();\r\n const range = document.createRange();\r\n range.selectNode(el);\r\n\r\n window.getSelection().removeAllRanges();\r\n selection.addRange(range);\r\n\r\n document.execCommand('copy');\r\n document.body.removeChild(el);\r\n }\r\n}\r\n","exports = module.exports = require(\"../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \":root {\\r\\n /**\\r\\n * Selection color\\r\\n */\\r\\n --selectionColor: #a8d6ff;\\r\\n\\r\\n /**\\r\\n * Toolbar buttons\\r\\n */\\r\\n --bg-light: #eff2f5;\\r\\n\\r\\n /**\\r\\n * All gray texts: placeholders, settings\\r\\n */\\r\\n --grayText: #707684;\\r\\n\\r\\n /**\\r\\n * Blue icons\\r\\n */\\r\\n --color-active-icon: #388AE5;\\r\\n\\r\\n /**\\r\\n * Gray border, loaders\\r\\n */\\r\\n --color-gray-border: rgba(201, 201, 204, 0.48);\\r\\n\\r\\n /**\\r\\n * Block content width\\r\\n */\\r\\n --content-width: 650px;\\r\\n\\r\\n /**\\r\\n * Toolbar buttons height and width\\r\\n */\\r\\n --toolbar-buttons-size: 34px;\\r\\n\\r\\n /**\\r\\n * Toolbar Plus Button and Toolbox buttons height and width\\r\\n */\\r\\n --toolbox-buttons-size: 24px;\\r\\n\\r\\n /**\\r\\n * Confirm deletion bg\\r\\n */\\r\\n --color-confirm: #E24A4A;\\r\\n}\\r\\n/**\\r\\n* Editor wrapper\\r\\n*/\\r\\n.codex-editor {\\r\\n position: relative;\\r\\n -webkit-box-sizing: border-box;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n.codex-editor .hide {\\r\\n display: none;\\r\\n }\\r\\n.codex-editor__redactor {\\r\\n padding-bottom: 300px;\\r\\n }\\r\\n.codex-editor-copyable {\\r\\n position: absolute;\\r\\n height: 1px;\\r\\n width: 1px;\\r\\n top: -400%;\\r\\n opacity: 0.001;\\r\\n }\\r\\n.codex-editor svg {\\r\\n fill: currentColor;\\r\\n vertical-align: middle;\\r\\n max-height: 100%;\\r\\n }\\r\\n/**\\r\\n * Set color for native selection\\r\\n */\\r\\n::-moz-selection{\\r\\n background-color: #a8d6ff;\\r\\n background-color: var(--selectionColor);\\r\\n}\\r\\n::selection{\\r\\n background-color: #a8d6ff;\\r\\n background-color: var(--selectionColor);\\r\\n}\\r\\n/**\\r\\n * Add placeholder to content editable elements with data attribute\\r\\n * data-placeholder=\\\"Hello world!\\\"\\r\\n */\\r\\n[contentEditable=true][data-placeholder]:empty::before{\\r\\n content: attr(data-placeholder);\\r\\n color: #707684;\\r\\n color: var(--grayText);\\r\\n font-weight: normal;\\r\\n}\\r\\n[contentEditable=true][data-placeholder]:empty:focus::before {\\r\\n opacity: 0.3;\\r\\n}\\r\\n.ce-toolbar {\\r\\n position: absolute;\\r\\n left: 0;\\r\\n right: 0;\\r\\n top: 0;\\r\\n /*opacity: 0;*/\\r\\n /*visibility: hidden;*/\\r\\n -webkit-transition: opacity 100ms ease;\\r\\n transition: opacity 100ms ease;\\r\\n will-change: opacity, transform;\\r\\n display: none;\\r\\n}\\r\\n.ce-toolbar--opened {\\r\\n display: block;\\r\\n /*opacity: 1;*/\\r\\n /*visibility: visible;*/\\r\\n }\\r\\n.ce-toolbar__content {\\r\\n max-width: 650px;\\r\\n max-width: var(--content-width);\\r\\n margin: 0 auto;\\r\\n position: relative;\\r\\n }\\r\\n.ce-toolbar__plus {\\r\\n color: #707684;\\r\\n color: var(--grayText);\\r\\n cursor: pointer;\\r\\n width: 24px;\\r\\n width: var(--toolbox-buttons-size);\\r\\n height: 24px;\\r\\n height: var(--toolbox-buttons-size);\\r\\n display: -webkit-inline-box;\\r\\n display: -ms-inline-flexbox;\\r\\n display: inline-flex;\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center\\r\\n }\\r\\n.ce-toolbar__plus:not(:last-of-type){\\r\\n margin-right: 10px;\\r\\n }\\r\\n.ce-toolbar__plus {\\r\\n\\r\\n position: absolute;\\r\\n left: calc(calc(24px + 10px) * -1);\\r\\n left: calc(calc(var(--toolbox-buttons-size) + 10px) * -1);\\r\\n }\\r\\n.ce-toolbar__plus:hover,\\r\\n .ce-toolbar__plus--active {\\r\\n color: #388AE5;\\r\\n color: var(--color-active-icon);\\r\\n }\\r\\n.ce-toolbar__plus--active{\\r\\n -webkit-animation: bounceIn 0.75s 1;\\r\\n animation: bounceIn 0.75s 1;\\r\\n -webkit-animation-fill-mode: forwards;\\r\\n animation-fill-mode: forwards;\\r\\n }\\r\\n.ce-toolbar__plus--hidden {\\r\\n display: none;\\r\\n }\\r\\n.ce-toolbar__plus,\\r\\n .ce-toolbar .ce-toolbox {\\r\\n top: 50%;\\r\\n -webkit-transform: translateY(-50%);\\r\\n transform: translateY(-50%);\\r\\n }\\r\\n/**\\r\\n * Block actions Zone\\r\\n * -------------------------\\r\\n */\\r\\n.ce-toolbar__actions {\\r\\n position: absolute;\\r\\n right: 0;\\r\\n top: 10px;\\r\\n padding-right: 16px;\\r\\n }\\r\\n.ce-toolbar__actions-buttons {\\r\\n text-align: right;\\r\\n }\\r\\n.ce-toolbar__settings-btn {\\r\\n display: inline-block;\\r\\n width: 24px;\\r\\n height: 24px;\\r\\n color: #707684;\\r\\n color: var(--grayText);\\r\\n cursor: pointer;\\r\\n }\\r\\n.ce-toolbox {\\r\\n position: absolute;\\r\\n visibility: hidden;\\r\\n -webkit-transition: opacity 100ms ease;\\r\\n transition: opacity 100ms ease;\\r\\n will-change: opacity;\\r\\n display: -webkit-box;\\r\\n display: -ms-flexbox;\\r\\n display: flex;\\r\\n -webkit-box-orient: horizontal;\\r\\n -webkit-box-direction: normal;\\r\\n -ms-flex-direction: row;\\r\\n flex-direction: row;\\r\\n}\\r\\n.ce-toolbox--opened {\\r\\n opacity: 1;\\r\\n visibility: visible;\\r\\n }\\r\\n.ce-toolbox__button {\\r\\n color: #707684;\\r\\n color: var(--grayText);\\r\\n cursor: pointer;\\r\\n width: 24px;\\r\\n width: var(--toolbox-buttons-size);\\r\\n height: 24px;\\r\\n height: var(--toolbox-buttons-size);\\r\\n display: -webkit-inline-box;\\r\\n display: -ms-inline-flexbox;\\r\\n display: inline-flex;\\r\\n -webkit-box-pack: center;\\r\\n -ms-flex-pack: center;\\r\\n justify-content: center;\\r\\n -webkit-box-align: center;\\r\\n -ms-flex-align: center;\\r\\n align-items: center;\\r\\n }\\r\\n.ce-toolbox__button:not(:last-of-type){\\r\\n margin-right: 10px;\\r\\n }\\r\\n.ce-toolbox__button:hover,\\r\\n .ce-toolbox__button--active {\\r\\n color: #388AE5;\\r\\n color: var(--color-active-icon);\\r\\n }\\r\\n.ce-toolbox__button--active{\\r\\n -webkit-animation: bounceIn 0.75s 1;\\r\\n animation: bounceIn 0.75s 1;\\r\\n -webkit-animation-fill-mode: forwards;\\r\\n animation-fill-mode: forwards;\\r\\n }\\r\\n.ce-inline-toolbar {\\r\\n position: absolute;\\r\\n background-color: #FFFFFF;\\r\\n -webkit-box-shadow: 0 8px 23px -6px rgba(21,40,54,0.31), 22px -14px 34px -18px rgba(33,48,73,0.26);\\r\\n box-shadow: 0 8px 23px -6px rgba(21,40,54,0.31), 22px -14px 34px -18px rgba(33,48,73,0.26);\\r\\n border-radius: 4px;\\r\\n z-index: 2\\r\\n}\\r\\n.ce-inline-toolbar::before {\\r\\n content: '';\\r\\n width: 15px;\\r\\n height: 15px;\\r\\n position: absolute;\\r\\n top: -7px;\\r\\n left: 50%;\\r\\n margin-left: -7px;\\r\\n -webkit-transform: rotate(-45deg);\\r\\n transform: rotate(-45deg);\\r\\n background-color: #fff;\\r\\n z-index: -1;\\r\\n }\\r\\n.ce-inline-toolbar {\\r\\n padding: 6px;\\r\\n -webkit-transform: translateX(-50%);\\r\\n transform: translateX(-50%);\\r\\n display: none;\\r\\n -webkit-box-shadow: 0 6px 12px -6px rgba(131, 147, 173, 0.46),\\r\\n 5px -12px 34px -13px rgba(97, 105, 134, 0.6),\\r\\n 0 26px 52px 3px rgba(147, 165, 186, 0.24);\\r\\n box-shadow: 0 6px 12px -6px rgba(131, 147, 173, 0.46),\\r\\n 5px -12px 34px -13px rgba(97, 105, 134, 0.6),\\r\\n 0 26px 52px 3px rgba(147, 165, 186, 0.24);\\r\\n}\\r\\n.ce-inline-toolbar--showed {\\r\\n display: block;\\r\\n }\\r\\n.ce-inline-toolbar [hidden] {\\r\\n display: none !important;\\r\\n }\\r\\n.ce-inline-tool {\\r\\n display: -webkit-inline-box;\\r\\n display: -ms-inline-flexbox;\\r\\n display: inline-flex;\\r\\n width: 34px;\\r\\n height: 34px;\\r\\n line-height: 34px;\\r\\n text-align: center;\\r\\n border-radius: 3px;\\r\\n cursor: pointer;\\r\\n border: 0;\\r\\n outline: none;\\r\\n background-color: transparent;\\r\\n vertical-align: bottom;\\r\\n color: #707684;\\r\\n color: var(--grayText)\\r\\n}\\r\\n.ce-inline-tool:not(:last-of-type){\\r\\n margin-right: 5px;\\r\\n }\\r\\n.ce-inline-tool:hover {\\r\\n background-color: #eff2f5;\\r\\n background-color: var(--bg-light);\\r\\n }\\r\\n.ce-inline-tool {\\r\\n line-height: normal;\\r\\n}\\r\\n.ce-inline-tool > svg,\\r\\n .ce-inline-tool .icon {\\r\\n margin: auto;\\r\\n }\\r\\n.ce-inline-tool--active {\\r\\n color: #388AE5;\\r\\n color: var(--color-active-icon);\\r\\n }\\r\\n.ce-inline-tool--last {\\r\\n margin-right: 0 !important;\\r\\n }\\r\\n.ce-inline-tool--link .icon {\\r\\n margin-top: -2px;\\r\\n }\\r\\n.ce-inline-tool--link .icon--unlink {\\r\\n display: none;\\r\\n }\\r\\n.ce-inline-tool--unlink .icon--link {\\r\\n display: none;\\r\\n }\\r\\n.ce-inline-tool--unlink .icon--unlink {\\r\\n display: inline-block;\\r\\n }\\r\\n.ce-inline-tool-input {\\r\\n background-color: #eff2f5;\\r\\n background-color: var(--bg-light);\\r\\n outline: none;\\r\\n border: 0;\\r\\n border-radius: 3px;\\r\\n margin: 6px 0 0;\\r\\n font-size: 13px;\\r\\n padding: 8px;\\r\\n width: 100%;\\r\\n -webkit-box-sizing: border-box;\\r\\n box-sizing: border-box;\\r\\n display: none\\r\\n }\\r\\n.ce-inline-tool-input::-webkit-input-placeholder {\\r\\n color: #707684;\\r\\n color: var(--grayText);\\r\\n }\\r\\n.ce-inline-tool-input::-ms-input-placeholder {\\r\\n color: #707684;\\r\\n color: var(--grayText);\\r\\n }\\r\\n.ce-inline-tool-input::placeholder {\\r\\n color: #707684;\\r\\n color: var(--grayText);\\r\\n }\\r\\n.ce-inline-tool-input--showed {\\r\\n display: block;\\r\\n }\\r\\n.ce-settings {\\r\\n position: absolute;\\r\\n background-color: #FFFFFF;\\r\\n -webkit-box-shadow: 0 8px 23px -6px rgba(21,40,54,0.31), 22px -14px 34px -18px rgba(33,48,73,0.26);\\r\\n box-shadow: 0 8px 23px -6px rgba(21,40,54,0.31), 22px -14px 34px -18px rgba(33,48,73,0.26);\\r\\n border-radius: 4px;\\r\\n z-index: 2\\r\\n}\\r\\n.ce-settings::before {\\r\\n content: '';\\r\\n width: 15px;\\r\\n height: 15px;\\r\\n position: absolute;\\r\\n top: -7px;\\r\\n left: 50%;\\r\\n margin-left: -7px;\\r\\n -webkit-transform: rotate(-45deg);\\r\\n transform: rotate(-45deg);\\r\\n background-color: #fff;\\r\\n z-index: -1;\\r\\n }\\r\\n.ce-settings {\\r\\n right: 5px;\\r\\n top: 35px;\\r\\n min-width: 124px\\r\\n}\\r\\n.ce-settings::before{\\r\\n left: auto;\\r\\n right: 12px;\\r\\n }\\r\\n.ce-settings {\\r\\n\\r\\n display: none;\\r\\n}\\r\\n.ce-settings--opened {\\r\\n display: block;\\r\\n -webkit-animation-duration: 0.5s;\\r\\n animation-duration: 0.5s;\\r\\n -webkit-animation-name: bounceIn;\\r\\n animation-name: bounceIn;\\r\\n }\\r\\n.ce-settings__plugin-zone:not(:empty){\\r\\n padding: 6px 6px 0;\\r\\n }\\r\\n.ce-settings__default-zone:not(:empty){\\r\\n padding: 6px;\\r\\n }\\r\\n.ce-settings__button {\\r\\n display: -webkit-inline-box;\\r\\n display: -ms-inline-flexbox;\\r\\n display: inline-flex;\\r\\n width: 34px;\\r\\n height: 34px;\\r\\n line-height: 34px;\\r\\n text-align: center;\\r\\n border-radius: 3px;\\r\\n cursor: pointer;\\r\\n border: 0;\\r\\n outline: none;\\r\\n background-color: transparent;\\r\\n vertical-align: bottom;\\r\\n color: #707684;\\r\\n color: var(--grayText)\\r\\n }\\r\\n.ce-settings__button:not(:last-of-type){\\r\\n margin-right: 5px;\\r\\n }\\r\\n.ce-settings__button:hover {\\r\\n background-color: #eff2f5;\\r\\n background-color: var(--bg-light);\\r\\n }\\r\\n.ce-settings__button {\\r\\n line-height: 32px;\\r\\n }\\r\\n.ce-settings__button > svg,\\r\\n .ce-settings__button .icon {\\r\\n margin: auto;\\r\\n }\\r\\n.ce-settings__button--active {\\r\\n color: #388AE5;\\r\\n color: var(--color-active-icon);\\r\\n }\\r\\n.ce-settings__button--disabled {\\r\\n cursor: not-allowed !important;\\r\\n opacity: .3;\\r\\n }\\r\\n.ce-settings__button--selected {\\r\\n color: #388AE5;\\r\\n color: var(--color-active-icon);\\r\\n }\\r\\n.ce-settings__button--delete {\\r\\n -webkit-transition: background-color 300ms ease;\\r\\n transition: background-color 300ms ease;\\r\\n will-change: background-color;\\r\\n }\\r\\n.ce-settings__button--delete .icon {\\r\\n -webkit-transition: -webkit-transform 200ms ease-out;\\r\\n transition: -webkit-transform 200ms ease-out;\\r\\n transition: transform 200ms ease-out;\\r\\n transition: transform 200ms ease-out, -webkit-transform 200ms ease-out;\\r\\n will-change: transform;\\r\\n }\\r\\n.ce-settings__button--confirm {\\r\\n background-color: #E24A4A;\\r\\n background-color: var(--color-confirm);\\r\\n color: #fff\\r\\n }\\r\\n.ce-settings__button--confirm:hover {\\r\\n background-color: rgb(213, 74, 74) !important;\\r\\n background-color: rgb(213, 74, 74) !important;\\r\\n }\\r\\n.ce-settings__button--confirm .icon {\\r\\n -webkit-transform: rotate(90deg);\\r\\n transform: rotate(90deg);\\r\\n }\\r\\n.ce-block:first-of-type {\\r\\n margin-top: 0;\\r\\n }\\r\\n.ce-block--focused {\\r\\n background-image: linear-gradient(17deg, rgba(243, 248, 255, 0.03) 63.45%, rgba(207, 214, 229, 0.27) 98%);\\r\\n border-radius: 3px;\\r\\n }\\r\\n.ce-block--selected .ce-block__content {\\r\\n background: #a8d6ff;\\r\\n background: var(--selectionColor);\\r\\n -webkit-box-shadow: 0 31px 23px -22px rgba(175, 220, 255, 1);\\r\\n box-shadow: 0 31px 23px -22px rgba(175, 220, 255, 1);\\r\\n -webkit-animation: selectionBounce 0.2s 1;\\r\\n animation: selectionBounce 0.2s 1;\\r\\n -webkit-animation-fill-mode: forwards;\\r\\n animation-fill-mode: forwards;\\r\\n }\\r\\n.ce-block--selected .ce-block__content img {\\r\\n opacity: 0.55;\\r\\n }\\r\\n.ce-block--stretched .ce-block__content {\\r\\n max-width: none;\\r\\n }\\r\\n.ce-block__content {\\r\\n position: relative;\\r\\n max-width: 650px;\\r\\n max-width: var(--content-width);\\r\\n margin: 0 auto;\\r\\n }\\r\\n.ce-block--drop-target .ce-block__content:before {\\r\\n content: '';\\r\\n position: absolute;\\r\\n top: 100%;\\r\\n left: -20px;\\r\\n margin-top: -1px;\\r\\n height: 8px;\\r\\n width: 8px;\\r\\n border: solid #388AE5;\\r\\n border: solid var(--color-active-icon);\\r\\n border-width: 1px 1px 0 0;\\r\\n -webkit-transform-origin: right;\\r\\n transform-origin: right;\\r\\n -webkit-transform: rotate(45deg);\\r\\n transform: rotate(45deg);\\r\\n }\\r\\n.ce-block--drop-target .ce-block__content:after {\\r\\n content: '';\\r\\n position: absolute;\\r\\n top: 100%;\\r\\n height: 1px;\\r\\n width: 100%;\\r\\n color: #388AE5;\\r\\n color: var(--color-active-icon);\\r\\n background: repeating-linear-gradient(\\r\\n 90deg,\\r\\n #388AE5,\\r\\n #388AE5 1px,\\r\\n #fff 1px,\\r\\n #fff 6px\\r\\n );\\r\\n background: repeating-linear-gradient(\\r\\n 90deg,\\r\\n var(--color-active-icon),\\r\\n var(--color-active-icon) 1px,\\r\\n #fff 1px,\\r\\n #fff 6px\\r\\n );\\r\\n }\\r\\n.wobble {\\r\\n -webkit-animation-name: wobble;\\r\\n animation-name: wobble;\\r\\n -webkit-animation-duration: 400ms;\\r\\n animation-duration: 400ms;\\r\\n}\\r\\n/**\\r\\n * @author Nick Pettit - https://github.com/nickpettit/glide\\r\\n */\\r\\n@-webkit-keyframes wobble {\\r\\n from {\\r\\n -webkit-transform: translate3d(0, 0, 0);\\r\\n transform: translate3d(0, 0, 0);\\r\\n }\\r\\n\\r\\n 15% {\\r\\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -5deg);\\r\\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -5deg);\\r\\n }\\r\\n\\r\\n 30% {\\r\\n -webkit-transform: translate3d(2%, 0, 0) rotate3d(0, 0, 1, 3deg);\\r\\n transform: translate3d(2%, 0, 0) rotate3d(0, 0, 1, 3deg);\\r\\n }\\r\\n\\r\\n 45% {\\r\\n -webkit-transform: translate3d(-3%, 0, 0) rotate3d(0, 0, 1, -3deg);\\r\\n transform: translate3d(-3%, 0, 0) rotate3d(0, 0, 1, -3deg);\\r\\n }\\r\\n\\r\\n 60% {\\r\\n -webkit-transform: translate3d(2%, 0, 0) rotate3d(0, 0, 1, 2deg);\\r\\n transform: translate3d(2%, 0, 0) rotate3d(0, 0, 1, 2deg);\\r\\n }\\r\\n\\r\\n 75% {\\r\\n -webkit-transform: translate3d(-1%, 0, 0) rotate3d(0, 0, 1, -1deg);\\r\\n transform: translate3d(-1%, 0, 0) rotate3d(0, 0, 1, -1deg);\\r\\n }\\r\\n\\r\\n to {\\r\\n -webkit-transform: translate3d(0, 0, 0);\\r\\n transform: translate3d(0, 0, 0);\\r\\n }\\r\\n}\\r\\n@keyframes wobble {\\r\\n from {\\r\\n -webkit-transform: translate3d(0, 0, 0);\\r\\n transform: translate3d(0, 0, 0);\\r\\n }\\r\\n\\r\\n 15% {\\r\\n -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -5deg);\\r\\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -5deg);\\r\\n }\\r\\n\\r\\n 30% {\\r\\n -webkit-transform: translate3d(2%, 0, 0) rotate3d(0, 0, 1, 3deg);\\r\\n transform: translate3d(2%, 0, 0) rotate3d(0, 0, 1, 3deg);\\r\\n }\\r\\n\\r\\n 45% {\\r\\n -webkit-transform: translate3d(-3%, 0, 0) rotate3d(0, 0, 1, -3deg);\\r\\n transform: translate3d(-3%, 0, 0) rotate3d(0, 0, 1, -3deg);\\r\\n }\\r\\n\\r\\n 60% {\\r\\n -webkit-transform: translate3d(2%, 0, 0) rotate3d(0, 0, 1, 2deg);\\r\\n transform: translate3d(2%, 0, 0) rotate3d(0, 0, 1, 2deg);\\r\\n }\\r\\n\\r\\n 75% {\\r\\n -webkit-transform: translate3d(-1%, 0, 0) rotate3d(0, 0, 1, -1deg);\\r\\n transform: translate3d(-1%, 0, 0) rotate3d(0, 0, 1, -1deg);\\r\\n }\\r\\n\\r\\n to {\\r\\n -webkit-transform: translate3d(0, 0, 0);\\r\\n transform: translate3d(0, 0, 0);\\r\\n }\\r\\n}\\r\\n@-webkit-keyframes bounceIn {\\r\\n from,\\r\\n 20%,\\r\\n 40%,\\r\\n 60%,\\r\\n 80%,\\r\\n to {\\r\\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\\r\\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\\r\\n }\\r\\n\\r\\n 0% {\\r\\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\\r\\n transform: scale3d(0.9, 0.9, 0.9);\\r\\n }\\r\\n\\r\\n 20% {\\r\\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\\r\\n transform: scale3d(1.03, 1.03, 1.03);\\r\\n }\\r\\n\\r\\n 60% {\\r\\n -webkit-transform: scale3d(1, 1, 1);\\r\\n transform: scale3d(1, 1, 1);\\r\\n }\\r\\n}\\r\\n@keyframes bounceIn {\\r\\n from,\\r\\n 20%,\\r\\n 40%,\\r\\n 60%,\\r\\n 80%,\\r\\n to {\\r\\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\\r\\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\\r\\n }\\r\\n\\r\\n 0% {\\r\\n -webkit-transform: scale3d(0.9, 0.9, 0.9);\\r\\n transform: scale3d(0.9, 0.9, 0.9);\\r\\n }\\r\\n\\r\\n 20% {\\r\\n -webkit-transform: scale3d(1.03, 1.03, 1.03);\\r\\n transform: scale3d(1.03, 1.03, 1.03);\\r\\n }\\r\\n\\r\\n 60% {\\r\\n -webkit-transform: scale3d(1, 1, 1);\\r\\n transform: scale3d(1, 1, 1);\\r\\n }\\r\\n}\\r\\n@-webkit-keyframes selectionBounce {\\r\\n from,\\r\\n 20%,\\r\\n 40%,\\r\\n 60%,\\r\\n 80%,\\r\\n to {\\r\\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\\r\\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\\r\\n }\\r\\n\\r\\n 50% {\\r\\n -webkit-transform: scale3d(1.01, 1.01, 1.01);\\r\\n transform: scale3d(1.01, 1.01, 1.01);\\r\\n }\\r\\n\\r\\n 70% {\\r\\n -webkit-transform: scale3d(1, 1, 1);\\r\\n transform: scale3d(1, 1, 1);\\r\\n }\\r\\n}\\r\\n@keyframes selectionBounce {\\r\\n from,\\r\\n 20%,\\r\\n 40%,\\r\\n 60%,\\r\\n 80%,\\r\\n to {\\r\\n -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\\r\\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\\r\\n }\\r\\n\\r\\n 50% {\\r\\n -webkit-transform: scale3d(1.01, 1.01, 1.01);\\r\\n transform: scale3d(1.01, 1.01, 1.01);\\r\\n }\\r\\n\\r\\n 70% {\\r\\n -webkit-transform: scale3d(1, 1, 1);\\r\\n transform: scale3d(1, 1, 1);\\r\\n }\\r\\n}\\r\\n/**\\r\\n * Block Tool wrapper\\r\\n */\\r\\n.cdx-block {\\r\\n padding: 0.7em 0;\\r\\n}\\r\\n/**\\r\\n * Input\\r\\n */\\r\\n.cdx-input {\\r\\n border: 1px solid rgba(201, 201, 204, 0.48);\\r\\n border: 1px solid var(--color-gray-border);\\r\\n -webkit-box-shadow: inset 0 1px 2px 0 rgba(35, 44, 72, 0.06);\\r\\n box-shadow: inset 0 1px 2px 0 rgba(35, 44, 72, 0.06);\\r\\n border-radius: 3px;\\r\\n padding: 10px 12px;\\r\\n outline: none;\\r\\n width: 100%;\\r\\n -webkit-box-sizing: border-box;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n/**\\r\\n * Settings\\r\\n */\\r\\n.cdx-settings-button {\\r\\n display: -webkit-inline-box;\\r\\n display: -ms-inline-flexbox;\\r\\n display: inline-flex;\\r\\n width: 34px;\\r\\n height: 34px;\\r\\n line-height: 34px;\\r\\n text-align: center;\\r\\n border-radius: 3px;\\r\\n cursor: pointer;\\r\\n border: 0;\\r\\n outline: none;\\r\\n background-color: transparent;\\r\\n vertical-align: bottom;\\r\\n color: #707684;\\r\\n color: var(--grayText)\\r\\n}\\r\\n.cdx-settings-button:not(:last-of-type){\\r\\n margin-right: 5px;\\r\\n }\\r\\n.cdx-settings-button:hover {\\r\\n background-color: #eff2f5;\\r\\n background-color: var(--bg-light);\\r\\n }\\r\\n.cdx-settings-button > svg,\\r\\n .cdx-settings-button .icon {\\r\\n margin: auto;\\r\\n }\\r\\n.cdx-settings-button--active {\\r\\n color: #388AE5;\\r\\n color: var(--color-active-icon);\\r\\n }\\r\\n.cdx-settings-button--active {\\r\\n color: #388AE5;\\r\\n color: var(--color-active-icon);\\r\\n }\\r\\n/**\\r\\n * Loader\\r\\n */\\r\\n.cdx-loader {\\r\\n position: relative;\\r\\n border: 1px solid rgba(201, 201, 204, 0.48);\\r\\n border: 1px solid var(--color-gray-border)\\r\\n}\\r\\n.cdx-loader::before {\\r\\n content: '';\\r\\n position: absolute;\\r\\n left: 50%;\\r\\n top: 50%;\\r\\n width: 18px;\\r\\n height: 18px;\\r\\n margin: -11px 0 0 -11px;\\r\\n border: 2px solid rgba(201, 201, 204, 0.48);\\r\\n border: 2px solid var(--color-gray-border);\\r\\n border-left-color: #388AE5;\\r\\n border-left-color: var(--color-active-icon);\\r\\n border-radius: 50%;\\r\\n -webkit-animation: cdxRotation 1.2s infinite linear;\\r\\n animation: cdxRotation 1.2s infinite linear;\\r\\n }\\r\\n@-webkit-keyframes cdxRotation {\\r\\n 0% {\\r\\n -webkit-transform: rotate(0deg);\\r\\n transform: rotate(0deg);\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: rotate(360deg);\\r\\n transform: rotate(360deg);\\r\\n }\\r\\n}\\r\\n@keyframes cdxRotation {\\r\\n 0% {\\r\\n -webkit-transform: rotate(0deg);\\r\\n transform: rotate(0deg);\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: rotate(360deg);\\r\\n transform: rotate(360deg);\\r\\n }\\r\\n}\\r\\n/**\\r\\n * Button\\r\\n */\\r\\n.cdx-button {\\r\\n padding: 13px;\\r\\n border-radius: 3px;\\r\\n border: 1px solid rgba(201, 201, 204, 0.48);\\r\\n border: 1px solid var(--color-gray-border);\\r\\n font-size: 14.9px;\\r\\n background: #fff;\\r\\n -webkit-box-shadow: 0 2px 2px 0 rgba(18,30,57,0.04);\\r\\n box-shadow: 0 2px 2px 0 rgba(18,30,57,0.04);\\r\\n color: #707684;\\r\\n color: var(--grayText);\\r\\n text-align: center;\\r\\n cursor: pointer\\r\\n}\\r\\n.cdx-button:hover {\\r\\n background: #FBFCFE;\\r\\n -webkit-box-shadow: 0 1px 3px 0 rgba(18,30,57,0.08);\\r\\n box-shadow: 0 1px 3px 0 rgba(18,30,57,0.08);\\r\\n }\\r\\n.cdx-button svg {\\r\\n height: 20px;\\r\\n margin-right: 0.2em;\\r\\n margin-top: -2px;\\r\\n }\\r\\n\", \"\"]);\n\n// exports\n"],"sourceRoot":""}