{"version":3,"file":"js/5705-cacf81a2fdb1fc960ae9.js","mappings":"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","sources":["webpack://lionwheel/./node_modules/call-bind/callBound.js","webpack://lionwheel/./node_modules/call-bind/index.js","webpack://lionwheel/./node_modules/clone/clone.js","webpack://lionwheel/./node_modules/deep-equal/index.js","webpack://lionwheel/./node_modules/define-data-property/index.js","webpack://lionwheel/./node_modules/define-properties/index.js","webpack://lionwheel/./node_modules/es-define-property/index.js","webpack://lionwheel/./node_modules/es-errors/eval.js","webpack://lionwheel/./node_modules/es-errors/index.js","webpack://lionwheel/./node_modules/es-errors/range.js","webpack://lionwheel/./node_modules/es-errors/ref.js","webpack://lionwheel/./node_modules/es-errors/syntax.js","webpack://lionwheel/./node_modules/es-errors/type.js","webpack://lionwheel/./node_modules/es-errors/uri.js","webpack://lionwheel/./node_modules/eventemitter3/index.js","webpack://lionwheel/./node_modules/extend/index.js","webpack://lionwheel/./node_modules/fast-diff/diff.js","webpack://lionwheel/./node_modules/function-bind/implementation.js","webpack://lionwheel/./node_modules/function-bind/index.js","webpack://lionwheel/./node_modules/functions-have-names/index.js","webpack://lionwheel/./node_modules/get-intrinsic/index.js","webpack://lionwheel/./node_modules/gopd/index.js","webpack://lionwheel/./node_modules/has-property-descriptors/index.js","webpack://lionwheel/./node_modules/has-proto/index.js","webpack://lionwheel/./node_modules/has-symbols/index.js","webpack://lionwheel/./node_modules/has-symbols/shams.js","webpack://lionwheel/./node_modules/has-tostringtag/shams.js","webpack://lionwheel/./node_modules/hasown/index.js","webpack://lionwheel/./node_modules/is-arguments/index.js","webpack://lionwheel/./node_modules/is-date-object/index.js","webpack://lionwheel/./node_modules/is-regex/index.js","webpack://lionwheel/./node_modules/object-is/implementation.js","webpack://lionwheel/./node_modules/object-is/index.js","webpack://lionwheel/./node_modules/object-is/polyfill.js","webpack://lionwheel/./node_modules/object-is/shim.js","webpack://lionwheel/./node_modules/object-keys/implementation.js","webpack://lionwheel/./node_modules/object-keys/index.js","webpack://lionwheel/./node_modules/object-keys/isArguments.js","webpack://lionwheel/./node_modules/parchment/dist/parchment.js","webpack://lionwheel/./node_modules/quill-delta/lib/delta.js","webpack://lionwheel/./node_modules/quill-delta/lib/op.js","webpack://lionwheel/./node_modules/quill/blots/block.js","webpack://lionwheel/./node_modules/quill/blots/break.js","webpack://lionwheel/./node_modules/quill/blots/cursor.js","webpack://lionwheel/./node_modules/quill/blots/inline.js","webpack://lionwheel/./node_modules/quill/blots/text.js","webpack://lionwheel/./node_modules/quill/blots/container.js","webpack://lionwheel/./node_modules/quill/blots/embed.js","webpack://lionwheel/./node_modules/quill/blots/scroll.js","webpack://lionwheel/./node_modules/quill/formats/background.js","webpack://lionwheel/./node_modules/quill/formats/font.js","webpack://lionwheel/./node_modules/quill/formats/size.js","webpack://lionwheel/./node_modules/quill/modules/clipboard.js","webpack://lionwheel/./node_modules/quill/modules/history.js","webpack://lionwheel/./node_modules/quill/core.js","webpack://lionwheel/./node_modules/quill/core/emitter.js","webpack://lionwheel/./node_modules/quill/core/logger.js","webpack://lionwheel/./node_modules/quill/core/module.js","webpack://lionwheel/./node_modules/quill/core/polyfill.js","webpack://lionwheel/./node_modules/quill/core/editor.js","webpack://lionwheel/./node_modules/quill/core/quill.js","webpack://lionwheel/./node_modules/quill/core/selection.js","webpack://lionwheel/./node_modules/quill/core/theme.js","webpack://lionwheel/./node_modules/quill/formats/align.js","webpack://lionwheel/./node_modules/quill/formats/bold.js","webpack://lionwheel/./node_modules/quill/formats/code.js","webpack://lionwheel/./node_modules/quill/formats/color.js","webpack://lionwheel/./node_modules/quill/formats/direction.js","webpack://lionwheel/./node_modules/quill/formats/header.js","webpack://lionwheel/./node_modules/quill/formats/italic.js","webpack://lionwheel/./node_modules/quill/formats/link.js","webpack://lionwheel/./node_modules/quill/formats/strike.js","webpack://lionwheel/./node_modules/quill/formats/underline.js","webpack://lionwheel/./node_modules/quill/modules/keyboard.js","webpack://lionwheel/./node_modules/quill/modules/toolbar.js","webpack://lionwheel/./node_modules/quill/ui/picker.js","webpack://lionwheel/./node_modules/quill/ui/color-picker.js","webpack://lionwheel/./node_modules/quill/ui/icon-picker.js","webpack://lionwheel/./node_modules/quill/ui/tooltip.js","webpack://lionwheel/./node_modules/quill/themes/base.js","webpack://lionwheel/./node_modules/quill/themes/snow.js","webpack://lionwheel/./node_modules/quill/ui/icons.js","webpack://lionwheel/./node_modules/regexp.prototype.flags/implementation.js","webpack://lionwheel/./node_modules/regexp.prototype.flags/index.js","webpack://lionwheel/./node_modules/regexp.prototype.flags/polyfill.js","webpack://lionwheel/./node_modules/regexp.prototype.flags/shim.js","webpack://lionwheel/./node_modules/set-function-length/index.js","webpack://lionwheel/./node_modules/set-function-name/index.js","webpack://lionwheel/./node_modules/quill/assets/icons/align-center.svg","webpack://lionwheel/./node_modules/quill/assets/icons/align-justify.svg","webpack://lionwheel/./node_modules/quill/assets/icons/align-left.svg","webpack://lionwheel/./node_modules/quill/assets/icons/align-right.svg","webpack://lionwheel/./node_modules/quill/assets/icons/background.svg","webpack://lionwheel/./node_modules/quill/assets/icons/blockquote.svg","webpack://lionwheel/./node_modules/quill/assets/icons/bold.svg","webpack://lionwheel/./node_modules/quill/assets/icons/clean.svg","webpack://lionwheel/./node_modules/quill/assets/icons/code.svg","webpack://lionwheel/./node_modules/quill/assets/icons/color.svg","webpack://lionwheel/./node_modules/quill/assets/icons/direction-ltr.svg","webpack://lionwheel/./node_modules/quill/assets/icons/direction-rtl.svg","webpack://lionwheel/./node_modules/quill/assets/icons/dropdown.svg","webpack://lionwheel/./node_modules/quill/assets/icons/float-center.svg","webpack://lionwheel/./node_modules/quill/assets/icons/float-full.svg","webpack://lionwheel/./node_modules/quill/assets/icons/float-left.svg","webpack://lionwheel/./node_modules/quill/assets/icons/float-right.svg","webpack://lionwheel/./node_modules/quill/assets/icons/formula.svg","webpack://lionwheel/./node_modules/quill/assets/icons/header-2.svg","webpack://lionwheel/./node_modules/quill/assets/icons/header.svg","webpack://lionwheel/./node_modules/quill/assets/icons/image.svg","webpack://lionwheel/./node_modules/quill/assets/icons/indent.svg","webpack://lionwheel/./node_modules/quill/assets/icons/italic.svg","webpack://lionwheel/./node_modules/quill/assets/icons/link.svg","webpack://lionwheel/./node_modules/quill/assets/icons/list-bullet.svg","webpack://lionwheel/./node_modules/quill/assets/icons/list-check.svg","webpack://lionwheel/./node_modules/quill/assets/icons/list-ordered.svg","webpack://lionwheel/./node_modules/quill/assets/icons/outdent.svg","webpack://lionwheel/./node_modules/quill/assets/icons/strike.svg","webpack://lionwheel/./node_modules/quill/assets/icons/subscript.svg","webpack://lionwheel/./node_modules/quill/assets/icons/superscript.svg","webpack://lionwheel/./node_modules/quill/assets/icons/underline.svg","webpack://lionwheel/./node_modules/quill/assets/icons/video.svg"],"sourcesContent":["'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","(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[\"Parchment\"] = factory();\n\telse\n\t\troot[\"Parchment\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\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/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 9);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(0);\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(11);\nvar shadow_1 = __webpack_require__(5);\nvar Registry = __webpack_require__(0);\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(1);\nvar store_1 = __webpack_require__(6);\nvar container_1 = __webpack_require__(2);\nvar Registry = __webpack_require__(0);\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(5);\nvar Registry = __webpack_require__(0);\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n var _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(0);\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent_1 = Registry.create(this.statics.scope);\n blot.wrap(parent_1);\n parent_1.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(1);\nvar class_1 = __webpack_require__(7);\nvar style_1 = __webpack_require__(8);\nvar Registry = __webpack_require__(0);\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(1);\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(1);\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(10);\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(2);\nvar format_1 = __webpack_require__(3);\nvar leaf_1 = __webpack_require__(4);\nvar scroll_1 = __webpack_require__(12);\nvar inline_1 = __webpack_require__(13);\nvar block_1 = __webpack_require__(14);\nvar embed_1 = __webpack_require__(15);\nvar text_1 = __webpack_require__(16);\nvar attributor_1 = __webpack_require__(1);\nvar class_1 = __webpack_require__(7);\nvar style_1 = __webpack_require__(8);\nvar store_1 = __webpack_require__(6);\nvar Registry = __webpack_require__(0);\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length_1 = cur.length();\n if (index < length_1 ||\n (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length_1;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(2);\nvar Registry = __webpack_require__(0);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(3);\nvar Registry = __webpack_require__(0);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(3);\nvar Registry = __webpack_require__(0);\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(4);\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(4);\nvar Registry = __webpack_require__(0);\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=parchment.js.map","var diff = require('fast-diff');\nvar equal = require('deep-equal');\nvar extend = require('extend');\nvar op = require('./op');\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n","var equal = require('deep-equal');\nvar extend = require('extend');\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\nIterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n};\n\n\nmodule.exports = lib;\n","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Break from './break';\nimport Inline from './inline';\nimport TextBlot from './text';\n\n\nconst NEWLINE_LENGTH = 1;\n\n\nclass BlockEmbed extends Parchment.Embed {\n attach() {\n super.attach();\n this.attributes = new Parchment.Attributor.Store(this.domNode);\n }\n\n delta() {\n return new Delta().insert(this.value(), extend(this.formats(), this.attributes.values()));\n }\n\n format(name, value) {\n let attribute = Parchment.query(name, Parchment.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n\n formatAt(index, length, name, value) {\n this.format(name, value);\n }\n\n insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n let block = Parchment.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n super.insertAt(index, value, def);\n }\n }\n}\nBlockEmbed.scope = Parchment.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nclass Block extends Parchment.Block {\n constructor(domNode) {\n super(domNode);\n this.cache = {};\n }\n\n delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(Parchment.Leaf).reduce((delta, leaf) => {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new Delta()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n\n deleteAt(index, length) {\n super.deleteAt(index, length);\n this.cache = {};\n }\n\n formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n\n insertAt(index, value, def) {\n if (def != null) return super.insertAt(index, value, def);\n if (value.length === 0) return;\n let lines = value.split('\\n');\n let text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n super.insertAt(Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n let block = this;\n lines.reduce(function(index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n\n insertBefore(blot, ref) {\n let head = this.children.head;\n super.insertBefore(blot, ref);\n if (head instanceof Break) {\n head.remove();\n }\n this.cache = {};\n }\n\n length() {\n if (this.cache.length == null) {\n this.cache.length = super.length() + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n\n moveChildren(target, ref) {\n super.moveChildren(target, ref);\n this.cache = {};\n }\n\n optimize(context) {\n super.optimize(context);\n this.cache = {};\n }\n\n path(index) {\n return super.path(index, true);\n }\n\n removeChild(child) {\n super.removeChild(child);\n this.cache = {};\n }\n\n split(index, force = false) {\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n let clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n let next = super.split(index, force);\n this.cache = {};\n return next;\n }\n }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [Inline, Parchment.Embed, TextBlot];\n\n\nfunction bubbleFormats(blot, formats = {}) {\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = extend(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\n\nexport { bubbleFormats, BlockEmbed, Block as default };\n","import Parchment from 'parchment';\n\n\nclass Break extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n insertInto(parent, ref) {\n if (parent.children.length === 0) {\n super.insertInto(parent, ref);\n } else {\n this.remove();\n }\n }\n\n length() {\n return 0;\n }\n\n value() {\n return '';\n }\n}\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\n\nexport default Break;\n","import Parchment from 'parchment';\nimport TextBlot from './text';\n\n\nclass Cursor extends Parchment.Embed {\n static value() {\n return undefined;\n }\n\n constructor(domNode, selection) {\n super(domNode);\n this.selection = selection;\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n this._length = 0;\n }\n\n detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n\n format(name, value) {\n if (this._length !== 0) {\n return super.format(name, value);\n }\n let target = this, index = 0;\n while (target != null && target.statics.scope !== Parchment.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n\n index(node, offset) {\n if (node === this.textNode) return 0;\n return super.index(node, offset);\n }\n\n length() {\n return this._length;\n }\n\n position() {\n return [this.textNode, this.textNode.data.length];\n }\n\n remove() {\n super.remove();\n this.parent = null;\n }\n\n restore() {\n if (this.selection.composing || this.parent == null) return;\n let textNode = this.textNode;\n let range = this.selection.getNativeRange();\n let restoreText, start, end;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n [restoreText, start, end] = [textNode, range.start.offset, range.end.offset];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n let text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof TextBlot) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(Parchment.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n [start, end] = [start, end].map(function(offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n\n update(mutations, context) {\n if (mutations.some((mutation) => {\n return mutation.type === 'characterData' && mutation.target === this.textNode;\n })) {\n let range = this.restore();\n if (range) context.range = range;\n }\n }\n\n value() {\n return '';\n }\n}\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = \"\\uFEFF\"; // Zero width no break space\n\n\nexport default Cursor;\n","import Text from './text';\nimport Parchment from 'parchment';\n\n\nclass Inline extends Parchment.Inline {\n static compare(self, other) {\n let selfIndex = Inline.order.indexOf(self);\n let otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n\n formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && Parchment.query(name, Parchment.Scope.BLOT)) {\n let blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n super.formatAt(index, length, name, value);\n }\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.parent instanceof Inline &&\n Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n let parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n}\nInline.allowedChildren = [Inline, Parchment.Embed, Text];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = [\n 'cursor', 'inline', // Must be lower\n 'underline', 'strike', 'italic', 'bold', 'script',\n 'link', 'code' // Must be higher\n];\n\n\nexport default Inline;\n","import Parchment from 'parchment';\n\nclass TextBlot extends Parchment.Text { }\n\nexport default TextBlot;\n","import Parchment from 'parchment';\nimport Block, { BlockEmbed } from './block';\n\n\nclass Container extends Parchment.Container { }\nContainer.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Container;\n","import Parchment from 'parchment';\nimport TextBlot from './text';\n\nconst GUARD_TEXT = \"\\uFEFF\";\n\n\nclass Embed extends Parchment.Embed {\n constructor(node) {\n super(node);\n this.contentNode = document.createElement('span');\n this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(this.domNode.childNodes).forEach((childNode) => {\n this.contentNode.appendChild(childNode);\n });\n this.leftGuard = document.createTextNode(GUARD_TEXT);\n this.rightGuard = document.createTextNode(GUARD_TEXT);\n this.domNode.appendChild(this.leftGuard);\n this.domNode.appendChild(this.contentNode);\n this.domNode.appendChild(this.rightGuard);\n }\n\n index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return super.index(node, offset);\n }\n\n restore(node) {\n let range, textNode;\n let text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof TextBlot) {\n let prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof TextBlot) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n }\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(Parchment.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n\n update(mutations, context) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'characterData' &&\n (mutation.target === this.leftGuard || mutation.target === this.rightGuard)) {\n let range = this.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n}\n\n\nexport default Embed;\n","import Parchment from 'parchment';\nimport Emitter from '../core/emitter';\nimport Block, { BlockEmbed } from './block';\nimport Break from './break';\nimport CodeBlock from '../formats/code';\nimport Container from './container';\n\n\nfunction isLine(blot) {\n return (blot instanceof Block || blot instanceof BlockEmbed);\n}\n\n\nclass Scroll extends Parchment.Scroll {\n constructor(domNode, config) {\n super(domNode);\n this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n this.whitelist = config.whitelist.reduce(function(whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n this.domNode.addEventListener('DOMNodeInserted', function() {});\n this.optimize();\n this.enable();\n }\n\n batchStart() {\n this.batch = true;\n }\n\n batchEnd() {\n this.batch = false;\n this.optimize();\n }\n\n deleteAt(index, length) {\n let [first, offset] = this.line(index);\n let [last, ] = this.line(index + length);\n super.deleteAt(index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof BlockEmbed || last instanceof BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof CodeBlock) {\n let newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof CodeBlock) {\n let newlineIndex = last.newlineIndex(0);\n if (newlineIndex > -1) {\n last.split(newlineIndex + 1);\n }\n }\n let ref = last.children.head instanceof Break ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n\n enable(enabled = true) {\n this.domNode.setAttribute('contenteditable', enabled);\n }\n\n formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n super.formatAt(index, length, format, value);\n this.optimize();\n }\n\n insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || Parchment.query(value, Parchment.Scope.BLOCK) == null) {\n let blot = Parchment.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n let embed = Parchment.create(value, def);\n this.appendChild(embed);\n }\n } else {\n super.insertAt(index, value, def);\n }\n this.optimize();\n }\n\n insertBefore(blot, ref) {\n if (blot.statics.scope === Parchment.Scope.INLINE_BLOT) {\n let wrapper = Parchment.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n super.insertBefore(blot, ref);\n }\n\n leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n\n line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n\n lines(index = 0, length = Number.MAX_VALUE) {\n let getLines = (blot, index, length) => {\n let lines = [], lengthLeft = length;\n blot.children.forEachAt(index, length, function(child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof Parchment.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n\n optimize(mutations = [], context = {}) {\n if (this.batch === true) return;\n super.optimize(mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n\n path(index) {\n return super.path(index).slice(1); // Exclude self\n }\n\n update(mutations) {\n if (this.batch === true) return;\n let source = Emitter.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n super.update(mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n }\n }\n}\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Scroll;\n","import Parchment from 'parchment';\nimport { ColorAttributor } from './color';\n\nlet BackgroundClass = new Parchment.Attributor.Class('background', 'ql-bg', {\n scope: Parchment.Scope.INLINE\n});\nlet BackgroundStyle = new ColorAttributor('background', 'background-color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { BackgroundClass, BackgroundStyle };\n","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nlet FontClass = new Parchment.Attributor.Class('font', 'ql-font', config);\n\nclass FontStyleAttributor extends Parchment.Attributor.Style {\n value(node) {\n return super.value(node).replace(/[\"']/g, '');\n }\n}\n\nlet FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexport { FontStyle, FontClass };\n","import Parchment from 'parchment';\n\nlet SizeClass = new Parchment.Attributor.Class('size', 'ql-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nlet SizeStyle = new Parchment.Attributor.Style('size', 'font-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexport { SizeClass, SizeStyle };\n","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nimport { AlignAttribute, AlignStyle } from '../formats/align';\nimport { BackgroundStyle } from '../formats/background';\nimport CodeBlock from '../formats/code';\nimport { ColorStyle } from '../formats/color';\nimport { DirectionAttribute, DirectionStyle } from '../formats/direction';\nimport { FontStyle } from '../formats/font';\nimport { SizeStyle } from '../formats/size';\n\nlet debug = logger('quill:clipboard');\n\n\nconst DOM_KEY = '__ql-matcher';\n\nconst CLIPBOARD_CONFIG = [\n [Node.TEXT_NODE, matchText],\n [Node.TEXT_NODE, matchNewline],\n ['br', matchBreak],\n [Node.ELEMENT_NODE, matchNewline],\n [Node.ELEMENT_NODE, matchBlot],\n [Node.ELEMENT_NODE, matchSpacing],\n [Node.ELEMENT_NODE, matchAttributor],\n [Node.ELEMENT_NODE, matchStyles],\n ['li', matchIndent],\n ['b', matchAlias.bind(matchAlias, 'bold')],\n ['i', matchAlias.bind(matchAlias, 'italic')],\n ['style', matchIgnore]\n];\n\nconst ATTRIBUTE_ATTRIBUTORS = [\n AlignAttribute,\n DirectionAttribute\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nconst STYLE_ATTRIBUTORS = [\n AlignStyle,\n BackgroundStyle,\n ColorStyle,\n DirectionStyle,\n FontStyle,\n SizeStyle\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\n\nclass Clipboard extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.quill.root.addEventListener('paste', this.onPaste.bind(this));\n this.container = this.quill.addContainer('ql-clipboard');\n this.container.setAttribute('contenteditable', true);\n this.container.setAttribute('tabindex', -1);\n this.matchers = [];\n CLIPBOARD_CONFIG.concat(this.options.matchers).forEach(([selector, matcher]) => {\n if (!options.matchVisual && matcher === matchSpacing) return;\n this.addMatcher(selector, matcher);\n });\n }\n\n addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n\n convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n const formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[CodeBlock.blotName]) {\n const text = this.container.innerText;\n this.container.innerHTML = '';\n return new Delta().insert(text, { [CodeBlock.blotName]: formats[CodeBlock.blotName] });\n }\n let [elementMatchers, textMatchers] = this.prepareMatching();\n let delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new Delta().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n\n dangerouslyPasteHTML(index, html, source = Quill.sources.API) {\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, Quill.sources.SILENT);\n } else {\n let paste = this.convert(html);\n this.quill.updateContents(new Delta().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), Quill.sources.SILENT);\n }\n }\n\n onPaste(e) {\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n let range = this.quill.getSelection();\n let delta = new Delta().retain(range.index);\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(Quill.sources.SILENT);\n setTimeout(() => {\n delta = delta.concat(this.convert()).delete(range.length);\n this.quill.updateContents(delta, Quill.sources.USER);\n // range.length contributes to delta.length()\n this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT);\n this.quill.scrollingContainer.scrollTop = scrollTop;\n this.quill.focus();\n }, 1);\n }\n\n prepareMatching() {\n let elementMatchers = [], textMatchers = [];\n this.matchers.forEach((pair) => {\n let [selector, matcher] = pair;\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(this.container.querySelectorAll(selector), (node) => {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n}\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\n\nfunction applyFormat(delta, format, value) {\n if (typeof format === 'object') {\n return Object.keys(format).reduce(function(delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function(delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, extend({}, {[format]: value}, op.attributes));\n }\n }, new Delta());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n const DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n let endText = \"\";\n for (let i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n let op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1*text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n let style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) { // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function(delta, matcher) {\n return matcher(node, delta);\n }, new Delta());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], (delta, childNode) => {\n let childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function(childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new Delta());\n } else {\n return new Delta();\n }\n}\n\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n let attributes = Parchment.Attributor.Attribute.keys(node);\n let classes = Parchment.Attributor.Class.keys(node);\n let styles = Parchment.Attributor.Style.keys(node);\n let formats = {};\n attributes.concat(classes).concat(styles).forEach((name) => {\n let attr = Parchment.query(name, Parchment.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name]\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n let match = Parchment.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof Parchment.Embed) {\n let embed = {};\n let value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new Delta().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new Delta();\n}\n\nfunction matchIndent(node, delta) {\n let match = Parchment.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n let indent = -1, parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((Parchment.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new Delta().retain(delta.length() - 1).retain(1, { indent: indent}));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || (delta.length() > 0 && node.nextSibling && isLine(node.nextSibling))) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n let nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight*1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n let formats = {};\n let style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') ||\n parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) { // Could be 0.5in\n delta = new Delta().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n let text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n let replacer = function(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if ((node.previousSibling == null && isLine(node.parentNode)) ||\n (node.previousSibling != null && isLine(node.previousSibling))) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if ((node.nextSibling == null && isLine(node.parentNode)) ||\n (node.nextSibling != null && isLine(node.nextSibling))) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\n\nexport { Clipboard as default, matchAttributor, matchBlot, matchNewline, matchSpacing, matchText };\n","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass History extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.lastRecorded = 0;\n this.ignoreChange = false;\n this.clear();\n this.quill.on(Quill.events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\n if (eventName !== Quill.events.TEXT_CHANGE || this.ignoreChange) return;\n if (!this.options.userOnly || source === Quill.sources.USER) {\n this.record(delta, oldDelta);\n } else {\n this.transform(delta);\n }\n });\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, this.undo.bind(this));\n this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, this.redo.bind(this));\n if (/Win/i.test(navigator.platform)) {\n this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, this.redo.bind(this));\n }\n }\n\n change(source, dest) {\n if (this.stack[source].length === 0) return;\n let delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], Quill.sources.USER);\n this.ignoreChange = false;\n let index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n\n clear() {\n this.stack = { undo: [], redo: [] };\n }\n\n cutoff() {\n this.lastRecorded = 0;\n }\n\n record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n let undoDelta = this.quill.getContents().diff(oldDelta);\n let timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n let delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n\n redo() {\n this.change('redo', 'undo');\n }\n\n transform(delta) {\n this.stack.undo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function(change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n\n undo() {\n this.change('undo', 'redo');\n }\n}\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n let lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function(attr) {\n return Parchment.query(attr, Parchment.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n let deleteLength = delta.reduce(function(length, op) {\n length += (op.delete || 0);\n return length;\n }, 0);\n let changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\n\nexport { History as default, getLastChangeIndex };\n","import Parchment from 'parchment';\nimport Quill from './core/quill';\n\nimport Block, { BlockEmbed } from './blots/block';\nimport Break from './blots/break';\nimport Container from './blots/container';\nimport Cursor from './blots/cursor';\nimport Embed from './blots/embed';\nimport Inline from './blots/inline';\nimport Scroll from './blots/scroll';\nimport TextBlot from './blots/text';\n\nimport Clipboard from './modules/clipboard';\nimport History from './modules/history';\nimport Keyboard from './modules/keyboard';\n\nQuill.register({\n 'blots/block' : Block,\n 'blots/block/embed' : BlockEmbed,\n 'blots/break' : Break,\n 'blots/container' : Container,\n 'blots/cursor' : Cursor,\n 'blots/embed' : Embed,\n 'blots/inline' : Inline,\n 'blots/scroll' : Scroll,\n 'blots/text' : TextBlot,\n\n 'modules/clipboard' : Clipboard,\n 'modules/history' : History,\n 'modules/keyboard' : Keyboard\n});\n\nParchment.register(Block, Break, Cursor, Inline, Scroll, TextBlot);\n\n\nexport default Quill;\n","import EventEmitter from 'eventemitter3';\nimport logger from './logger';\n\nlet debug = logger('quill:events');\n\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function(eventName) {\n document.addEventListener(eventName, (...args) => {\n [].slice.call(document.querySelectorAll('.ql-container')).forEach((node) => {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n node.__quill.emitter.handleDOM(...args);\n }\n });\n });\n});\n\n\nclass Emitter extends EventEmitter {\n constructor() {\n super();\n this.listeners = {};\n this.on('error', debug.error);\n }\n\n emit() {\n debug.log.apply(debug, arguments);\n super.emit.apply(this, arguments);\n }\n\n handleDOM(event, ...args) {\n (this.listeners[event.type] || []).forEach(function({ node, handler }) {\n if (event.target === node || node.contains(event.target)) {\n handler(event, ...args);\n }\n });\n }\n\n listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node, handler })\n }\n}\n\nEmitter.events = {\n EDITOR_CHANGE : 'editor-change',\n SCROLL_BEFORE_UPDATE : 'scroll-before-update',\n SCROLL_OPTIMIZE : 'scroll-optimize',\n SCROLL_UPDATE : 'scroll-update',\n SELECTION_CHANGE : 'selection-change',\n TEXT_CHANGE : 'text-change'\n};\nEmitter.sources = {\n API : 'api',\n SILENT : 'silent',\n USER : 'user'\n};\n\n\nexport default Emitter;\n","let levels = ['error', 'warn', 'log', 'info'];\nlet level = 'warn';\n\nfunction debug(method, ...args) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n console[method](...args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function(logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function(newLevel) {\n level = newLevel;\n};\n\n\nexport default namespace;\n","class Module {\n constructor(quill, options = {}) {\n this.quill = quill;\n this.options = options;\n }\n}\nModule.DEFAULTS = {};\n\n\nexport default Module;\n","let elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n let _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function(token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position){\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function(searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n","import Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport CodeBlock from '../formats/code';\nimport CursorBlot from '../blots/cursor';\nimport Block, { bubbleFormats } from '../blots/block';\nimport Break from '../blots/break';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\n\n\nconst ASCII = /^[ -~]*$/;\n\n\nclass Editor {\n constructor(scroll) {\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n applyDelta(delta) {\n let consumeNextNewline = false;\n this.scroll.update();\n let scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce((index, op) => {\n let length = op.retain || op.delete || op.insert.length || 1;\n let attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n let text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n this.scroll.insertAt(index, text);\n let [line, offset] = this.scroll.line(index);\n let formats = extend({}, bubbleFormats(line));\n if (line instanceof Block) {\n let [leaf, ] = line.descendant(Parchment.Leaf, offset);\n formats = extend(formats, bubbleFormats(leaf));\n }\n attributes = DeltaOp.attributes.diff(formats, attributes) || {};\n } else if (typeof op.insert === 'object') {\n let key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach((name) => {\n this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce((index, op) => {\n if (typeof op.delete === 'number') {\n this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n\n deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new Delta().retain(index).delete(length));\n }\n\n formatLine(index, length, formats = {}) {\n this.scroll.update();\n Object.keys(formats).forEach((format) => {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n let lines = this.scroll.lines(index, Math.max(length, 1));\n let lengthRemaining = length;\n lines.forEach((line) => {\n let lineLength = line.length();\n if (!(line instanceof CodeBlock)) {\n line.format(format, formats[format]);\n } else {\n let codeIndex = index - line.offset(this.scroll);\n let codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n formatText(index, length, formats = {}) {\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n\n getDelta() {\n return this.scroll.lines().reduce((delta, line) => {\n return delta.concat(line.delta());\n }, new Delta());\n }\n\n getFormat(index, length = 0) {\n let lines = [], leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function(path) {\n let [blot, ] = path;\n if (blot instanceof Block) {\n lines.push(blot);\n } else if (blot instanceof Parchment.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(Parchment.Leaf, index, length);\n }\n let formatsArr = [lines, leaves].map(function(blots) {\n if (blots.length === 0) return {};\n let formats = bubbleFormats(blots.shift());\n while (Object.keys(formats).length > 0) {\n let blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats(bubbleFormats(blot), formats);\n }\n return formats;\n });\n return extend.apply(extend, formatsArr);\n }\n\n getText(index, length) {\n return this.getContents(index, length).filter(function(op) {\n return typeof op.insert === 'string';\n }).map(function(op) {\n return op.insert;\n }).join('');\n }\n\n insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new Delta().retain(index).insert({ [embed]: value }));\n }\n\n insertText(index, text, formats = {}) {\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).insert(text, clone(formats)));\n }\n\n isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n let block = this.scroll.children.head;\n if (block.statics.blotName !== Block.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof Break;\n }\n\n removeFormat(index, length) {\n let text = this.getText(index, length);\n let [line, offset] = this.scroll.line(index + length);\n let suffixLength = 0, suffix = new Delta();\n if (line != null) {\n if (!(line instanceof CodeBlock)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n let contents = this.getContents(index, length + suffixLength);\n let diff = contents.diff(new Delta().insert(text).concat(suffix));\n let delta = new Delta().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n\n update(change, mutations = [], cursorIndex = undefined) {\n let oldDelta = this.delta;\n if (mutations.length === 1 &&\n mutations[0].type === 'characterData' &&\n mutations[0].target.data.match(ASCII) &&\n Parchment.find(mutations[0].target)) {\n // Optimization for character changes\n let textBlot = Parchment.find(mutations[0].target);\n let formats = bubbleFormats(textBlot);\n let index = textBlot.offset(this.scroll);\n let oldValue = mutations[0].oldValue.replace(CursorBlot.CONTENTS, '');\n let oldText = new Delta().insert(oldValue);\n let newText = new Delta().insert(textBlot.value());\n let diffDelta = new Delta().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function(delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new Delta());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !equal(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n}\n\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function(merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function(delta, op) {\n if (op.insert === 1) {\n let attributes = clone(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = clone(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n let text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new Delta());\n}\n\n\nexport default Editor;\n","import './polyfill';\nimport Delta from 'quill-delta';\nimport Editor from './editor';\nimport Emitter from './emitter';\nimport Module from './module';\nimport Parchment from 'parchment';\nimport Selection, { Range } from './selection';\nimport extend from 'extend';\nimport logger from './logger';\nimport Theme from './theme';\n\nlet debug = logger('quill');\n\n\nclass Quill {\n static debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n logger.level(limit);\n }\n\n static find(node) {\n return node.__quill || Parchment.find(node);\n }\n\n static import(name) {\n if (this.imports[name] == null) {\n debug.error(`Cannot import ${name}. Are you sure it was registered?`);\n }\n return this.imports[name];\n }\n\n static register(path, target, overwrite = false) {\n if (typeof path !== 'string') {\n let name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach((key) => {\n this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn(`Overwriting ${path} with`, target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) &&\n target.blotName !== 'abstract') {\n Parchment.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n\n constructor(container, options = {}) {\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n let html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new Emitter();\n this.scroll = Parchment.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new Editor(this.scroll);\n this.selection = new Selection(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type) => {\n if (type === Emitter.events.TEXT_CHANGE) {\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\n }\n });\n this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n let range = this.selection.lastRange;\n let index = range && range.length === 0 ? range.index : undefined;\n modify.call(this, () => {\n return this.editor.update(null, mutations, index);\n }, source);\n });\n let contents = this.clipboard.convert(`
${html}


`);\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n addContainer(container, refNode = null) {\n if (typeof container === 'string') {\n let className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n\n blur() {\n this.selection.setRange(null);\n }\n\n deleteText(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.deleteText(index, length);\n }, source, index, -1*length);\n }\n\n disable() {\n this.enable(false);\n }\n\n enable(enabled = true) {\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n\n focus() {\n let scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n\n format(name, value, source = Emitter.sources.API) {\n return modify.call(this, () => {\n let range = this.getSelection(true);\n let change = new Delta();\n if (range == null) {\n return change;\n } else if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n change = this.editor.formatLine(range.index, range.length, { [name]: value });\n } else if (range.length === 0) {\n this.selection.format(name, value);\n return change;\n } else {\n change = this.editor.formatText(range.index, range.length, { [name]: value });\n }\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }, source);\n }\n\n formatLine(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n\n formatText(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n\n getBounds(index, length = 0) {\n let bounds;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n let containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n\n getContents(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getContents(index, length);\n }\n\n getFormat(index = this.getSelection(true), length = 0) {\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n\n getIndex(blot) {\n return blot.offset(this.scroll);\n }\n\n getLength() {\n return this.scroll.length();\n }\n\n getLeaf(index) {\n return this.scroll.leaf(index);\n }\n\n getLine(index) {\n return this.scroll.line(index);\n }\n\n getLines(index = 0, length = Number.MAX_VALUE) {\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n\n getModule(name) {\n return this.theme.modules[name];\n }\n\n getSelection(focus = false) {\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n\n getText(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getText(index, length);\n }\n\n hasFocus() {\n return this.selection.hasFocus();\n }\n\n insertEmbed(index, embed, value, source = Quill.sources.API) {\n return modify.call(this, () => {\n return this.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n\n insertText(index, text, name, value, source) {\n let formats;\n [index, , formats, source] = overload(index, 0, name, value, source);\n return modify.call(this, () => {\n return this.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n\n isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n\n off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n\n on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n\n once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n\n pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n\n removeFormat(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.removeFormat(index, length);\n }, source, index);\n }\n\n scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n\n setContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n let length = this.getLength();\n let deleted = this.editor.deleteText(0, length);\n let applied = this.editor.applyDelta(delta);\n let lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof(lastOp.insert) === 'string' && lastOp.insert[lastOp.insert.length-1] === '\\n') {\n this.editor.deleteText(this.getLength() - 1, 1);\n applied.delete(1);\n }\n let ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n\n setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n [index, length, , source] = overload(index, length, source);\n this.selection.setRange(new Range(index, length), source);\n if (source !== Emitter.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n\n setText(text, source = Emitter.sources.API) {\n let delta = new Delta().insert(text);\n return this.setContents(delta, source);\n }\n\n update(source = Emitter.sources.USER) {\n let change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n\n updateContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n return this.editor.applyDelta(delta, source);\n }, source, true);\n }\n}\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = Emitter.events;\nQuill.sources = Emitter.sources;\n// eslint-disable-next-line no-undef\nQuill.version = typeof(QUILL_VERSION) === 'undefined' ? 'dev' : QUILL_VERSION;\n\nQuill.imports = {\n 'delta' : Delta,\n 'parchment' : Parchment,\n 'core/module' : Module,\n 'core/theme' : Theme\n};\n\n\nfunction expandConfig(container, userConfig) {\n userConfig = extend(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = Theme;\n } else {\n userConfig.theme = Quill.import(`themes/${userConfig.theme}`);\n if (userConfig.theme == null) {\n throw new Error(`Invalid theme ${userConfig.theme}. Did you register it?`);\n }\n }\n let themeConfig = extend(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function(config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function(module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n let moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n let moduleConfig = moduleNames.reduce(function(config, name) {\n let moduleClass = Quill.import(`modules/${name}`);\n if (moduleClass == null) {\n debug.error(`Cannot load ${name} module. Are you sure you registered it?`);\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar &&\n userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = extend(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function(key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function(config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === Emitter.sources.USER) {\n return new Delta();\n }\n let range = index == null ? null : this.getSelection();\n let oldDelta = this.editor.delta;\n let change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, Emitter.sources.SILENT);\n }\n if (change.length() > 0) {\n let args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n let formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if (typeof name === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || Emitter.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n let start, end;\n if (index instanceof Delta) {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n return index.transformPosition(pos, source !== Emitter.sources.USER);\n });\n } else {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n if (pos < index || (pos === index && source === Emitter.sources.USER)) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n }\n return new Range(start, end - start);\n}\n\n\nexport { expandConfig, overload, Quill as default };\n","import Parchment from 'parchment';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport Emitter from './emitter';\nimport logger from './logger';\n\nlet debug = logger('quill:selection');\n\n\nclass Range {\n constructor(index, length = 0) {\n this.index = index;\n this.length = length;\n }\n}\n\n\nclass Selection {\n constructor(scroll, emitter) {\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = Parchment.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, () => {\n if (!this.mouseDown) {\n setTimeout(this.update.bind(this, Emitter.sources.USER), 1);\n }\n });\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type, delta) => {\n if (type === Emitter.events.TEXT_CHANGE && delta.length() > 0) {\n this.update(Emitter.sources.SILENT);\n }\n });\n this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n if (!this.hasFocus()) return;\n let native = this.getNativeRange();\n if (native == null) return;\n if (native.start.node === this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n this.emitter.once(Emitter.events.SCROLL_UPDATE, () => {\n try {\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(Emitter.events.SCROLL_OPTIMIZE, (mutations, context) => {\n if (context.range) {\n const { startNode, startOffset, endNode, endOffset } = context.range;\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(Emitter.sources.SILENT);\n }\n\n handleComposition() {\n this.root.addEventListener('compositionstart', () => {\n this.composing = true;\n });\n this.root.addEventListener('compositionend', () => {\n this.composing = false;\n if (this.cursor.parent) {\n const range = this.cursor.restore();\n if (!range) return;\n setTimeout(() => {\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n\n handleDragging() {\n this.emitter.listenDOM('mousedown', document.body, () => {\n this.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, () => {\n this.mouseDown = false;\n this.update(Emitter.sources.USER);\n });\n }\n\n focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n\n format(format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n this.scroll.update();\n let nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || Parchment.query(format, Parchment.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n let blot = Parchment.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof Parchment.Leaf) {\n let after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n\n getBounds(index, length = 0) {\n let scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n let node, [leaf, offset] = this.scroll.leaf(index);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n let range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n [leaf, offset] = this.scroll.leaf(index + length);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n let side = 'left';\n let rect;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n\n getNativeRange() {\n let selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n let nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n let range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n\n getRange() {\n let normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n let range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n\n hasFocus() {\n return document.activeElement === this.root;\n }\n\n normalizedToRange(range) {\n let positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n let indexes = positions.map((position) => {\n let [node, offset] = position;\n let blot = Parchment.find(node, true);\n let index = blot.offset(this.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof Parchment.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n let end = Math.min(Math.max(...indexes), this.scroll.length() - 1);\n let start = Math.min(end, ...indexes);\n return new Range(start, end-start);\n }\n\n normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) ||\n (!nativeRange.collapsed && !contains(this.root, nativeRange.endContainer))) {\n return null;\n }\n let range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function(position) {\n let node = position.node, offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n\n rangeToNative(range) {\n let indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n let args = [];\n let scrollLength = this.scroll.length();\n indexes.forEach((index, i) => {\n index = Math.min(scrollLength - 1, index);\n let node, [leaf, offset] = this.scroll.leaf(index);\n [node, offset] = leaf.position(offset, i !== 0);\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n\n scrollIntoView(scrollingContainer) {\n let range = this.lastRange;\n if (range == null) return;\n let bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n let limit = this.scroll.length()-1;\n let [first, ] = this.scroll.line(Math.min(range.index, limit));\n let last = first;\n if (range.length > 0) {\n [last, ] = this.scroll.line(Math.min(range.index + range.length, limit));\n }\n if (first == null || last == null) return;\n let scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= (scrollBounds.top - bounds.top);\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += (bounds.bottom - scrollBounds.bottom);\n }\n }\n\n setNativeRange(startNode, startOffset, endNode = startNode, endOffset = startOffset, force = false) {\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n let selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n let native = (this.getNativeRange() || {}).native;\n if (native == null || force ||\n startNode !== native.startContainer ||\n startOffset !== native.startOffset ||\n endNode !== native.endContainer ||\n endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n let range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n\n setRange(range, force = false, source = Emitter.sources.API) {\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n let args = this.rangeToNative(range);\n this.setNativeRange(...args, force);\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n\n update(source = Emitter.sources.USER) {\n let oldRange = this.lastRange;\n let [lastRange, nativeRange] = this.getRange();\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!equal(oldRange, this.lastRange)) {\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n let args = [Emitter.events.SELECTION_CHANGE, clone(this.lastRange), clone(oldRange), source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n }\n}\n\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\n\nexport { Range, Selection as default };\n","class Theme {\n constructor(quill, options) {\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n init() {\n Object.keys(this.options.modules).forEach((name) => {\n if (this.modules[name] == null) {\n this.addModule(name);\n }\n });\n }\n\n addModule(name) {\n let moduleClass = this.quill.constructor.import(`modules/${name}`);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n}\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\n\nexport default Theme;\n","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nlet AlignAttribute = new Parchment.Attributor.Attribute('align', 'align', config);\nlet AlignClass = new Parchment.Attributor.Class('align', 'ql-align', config);\nlet AlignStyle = new Parchment.Attributor.Style('align', 'text-align', config);\n\nexport { AlignAttribute, AlignClass, AlignStyle };\n","import Inline from '../blots/inline';\n\nclass Bold extends Inline {\n static create() {\n return super.create();\n }\n\n static formats() {\n return true;\n }\n\n optimize(context) {\n super.optimize(context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n}\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexport default Bold;\n","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Inline from '../blots/inline';\nimport TextBlot from '../blots/text';\n\n\nclass Code extends Inline {}\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\n\nclass CodeBlock extends Block {\n static create(value) {\n let domNode = super.create(value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n\n static formats() {\n return true;\n }\n\n delta() {\n let text = this.domNode.textContent;\n if (text.endsWith('\\n')) { // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce((delta, frag) => {\n return delta.insert(frag).insert('\\n', this.formats());\n }, new Delta());\n }\n\n format(name, value) {\n if (name === this.statics.blotName && value) return;\n let [text, ] = this.descendant(TextBlot, this.length() - 1);\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n super.format(name, value);\n }\n\n formatAt(index, length, name, value) {\n if (length === 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK) == null ||\n (name === this.statics.blotName && value === this.statics.formats(this.domNode))) {\n return;\n }\n let nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n let prevNewline = this.newlineIndex(index, true) + 1;\n let isolateLength = nextNewline - prevNewline + 1;\n let blot = this.isolate(prevNewline, isolateLength);\n let next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n\n insertAt(index, value, def) {\n if (def != null) return;\n let [text, offset] = this.descendant(TextBlot, index);\n text.insertAt(offset, value);\n }\n\n length() {\n let length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n\n newlineIndex(searchIndex, reverse = false) {\n if (!reverse) {\n let offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n\n optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(Parchment.create('text', '\\n'));\n }\n super.optimize(context);\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n super.replace(target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function(node) {\n let blot = Parchment.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof Parchment.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n}\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\n\nexport { Code, CodeBlock as default };\n","import Parchment from 'parchment';\n\nclass ColorAttributor extends Parchment.Attributor.Style {\n value(domNode) {\n let value = super.value(domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function(component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n}\n\nlet ColorClass = new Parchment.Attributor.Class('color', 'ql-color', {\n scope: Parchment.Scope.INLINE\n});\nlet ColorStyle = new ColorAttributor('color', 'color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { ColorAttributor, ColorClass, ColorStyle };\n","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nlet DirectionAttribute = new Parchment.Attributor.Attribute('direction', 'dir', config);\nlet DirectionClass = new Parchment.Attributor.Class('direction', 'ql-direction', config);\nlet DirectionStyle = new Parchment.Attributor.Style('direction', 'direction', config);\n\nexport { DirectionAttribute, DirectionClass, DirectionStyle };\n","import Block from '../blots/block';\n\n\nclass Header extends Block {\n static formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n}\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n\nexport default Header;\n","import Bold from './bold';\n\nclass Italic extends Bold { }\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexport default Italic;\n","import Inline from '../blots/inline';\n\n\nclass Link extends Inline {\n static create(value) {\n let node = super.create(value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('rel', 'noopener noreferrer');\n node.setAttribute('target', '_blank');\n return node;\n }\n\n static formats(domNode) {\n return domNode.getAttribute('href');\n }\n\n static sanitize(url) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n\n format(name, value) {\n if (name !== this.statics.blotName || !value) return super.format(name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n}\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\n\nfunction sanitize(url, protocols) {\n let anchor = document.createElement('a');\n anchor.href = url;\n let protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\n\nexport { Link as default, sanitize };\n","import Inline from '../blots/inline';\n\nclass Strike extends Inline { }\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexport default Strike;\n","import Inline from '../blots/inline';\n\nclass Underline extends Inline { }\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexport default Underline;\n","import clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\nimport Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:keyboard');\n\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n\nclass Keyboard extends Module {\n static match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function(key) {\n return (!!binding[key] !== evt[key] && binding[key] !== null);\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n\n constructor(quill, options) {\n super(quill, options);\n this.bindings = {};\n Object.keys(this.options.bindings).forEach((name) => {\n if (name === 'list autofill' &&\n quill.scroll.whitelist != null &&\n !quill.scroll.whitelist['list']) {\n return;\n }\n if (this.options.bindings[name]) {\n this.addBinding(this.options.bindings[name]);\n }\n });\n this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function() {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null },\n { collapsed: true, offset: 0 },\n handleBackspace);\n this.listen();\n }\n\n addBinding(key, context = {}, handler = {}) {\n let binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = extend(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n\n listen() {\n this.quill.root.addEventListener('keydown', (evt) => {\n if (evt.defaultPrevented) return;\n let which = evt.which || evt.keyCode;\n let bindings = (this.bindings[which] || []).filter(function(binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n let range = this.quill.getSelection();\n if (range == null || !this.quill.hasFocus()) return;\n let [line, offset] = this.quill.getLine(range.index);\n let [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n let [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\n let prefixText = leafStart instanceof Parchment.Text ? leafStart.value().slice(0, offsetStart) : '';\n let suffixText = leafEnd instanceof Parchment.Text ? leafEnd.value().slice(offsetEnd) : '';\n let curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: this.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n let prevented = bindings.some((binding) => {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function(name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (typeof binding.format === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function(name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return equal(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(this, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n}\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold' : makeFormatHandler('bold'),\n 'italic' : makeFormatHandler('italic'),\n 'underline' : makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', Quill.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', Quill.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', Quill.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, Quill.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function(range) {\n this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function(range) {\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index)\n .delete(range.length)\n .insert('\\t');\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function(range, context) {\n this.quill.format('list', false, Quill.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, Quill.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function(range) {\n let [line, offset] = this.quill.getLine(range.index);\n let formats = extend({}, line.formats(), { list: 'checked' });\n let delta = new Delta().retain(range.index)\n .insert('\\n', formats)\n .retain(line.length() - offset - 1)\n .retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function(range, context) {\n let [line, offset] = this.quill.getLine(range.index);\n let delta = new Delta().retain(range.index)\n .insert('\\n', context.format)\n .retain(line.length() - offset - 1)\n .retain(1, { header: null });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function(range, context) {\n let length = context.prefix.length;\n let [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]': case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-': case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n let delta = new Delta().retain(range.index - offset)\n .delete(length + 1)\n .retain(line.length() - 2 - offset)\n .retain(1, { list: value });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function(range) {\n const [line, offset] = this.quill.getLine(range.index);\n const delta = new Delta()\n .retain(range.index + line.length() - offset - 2)\n .retain(1, { 'code-block': null })\n .delete(1);\n this.quill.updateContents(delta, Quill.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n const where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return {\n key,\n shiftKey,\n altKey: null,\n [where]: /^$/,\n handler: function(range) {\n let index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += (range.length + 1);\n }\n const [leaf, ] = this.quill.getLeaf(index);\n if (!(leaf instanceof Parchment.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, Quill.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, Quill.sources.USER);\n }\n }\n return false;\n }\n };\n}\n\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n let [line, ] = this.quill.getLine(range.index);\n let formats = {};\n if (context.offset === 0) {\n let [prev, ] = this.quill.getLine(range.index - 1);\n if (prev != null && prev.length() > 1) {\n let curFormats = line.formats();\n let prevFormats = this.quill.getFormat(range.index-1, 1);\n formats = DeltaOp.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n let length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index-length, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index-length, length, formats, Quill.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n let length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n let formats = {}, nextLength = 0;\n let [line, ] = this.quill.getLine(range.index);\n if (context.offset >= line.length() - 1) {\n let [next, ] = this.quill.getLine(range.index + 1);\n if (next) {\n let curFormats = line.formats();\n let nextFormats = this.quill.getFormat(range.index, 1);\n formats = DeltaOp.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, Quill.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n let lines = this.quill.getLines(range);\n let formats = {};\n if (lines.length > 1) {\n let firstFormats = lines[0].formats();\n let lastFormats = lines[lines.length - 1].formats();\n formats = DeltaOp.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, Quill.sources.USER);\n }\n this.quill.setSelection(range.index, Quill.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n let lineFormats = Object.keys(context.format).reduce(function(lineFormats, format) {\n if (Parchment.query(format, Parchment.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, Quill.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach((name) => {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n this.quill.format(name, context.format[name], Quill.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: {'code-block': true },\n handler: function(range) {\n let CodeBlock = Parchment.query('code-block');\n let index = range.index, length = range.length;\n let [block, offset] = this.quill.scroll.descendant(CodeBlock, index);\n if (block == null) return;\n let scrollIndex = this.quill.getIndex(block);\n let start = block.newlineIndex(offset, true) + 1;\n let end = block.newlineIndex(scrollIndex + offset + length);\n let lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach((line, i) => {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(Quill.sources.USER);\n this.quill.setSelection(index, length, Quill.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function(range, context) {\n this.quill.format(format, !context.format[format], Quill.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if (typeof binding === 'object') {\n binding = clone(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\n\nexport { Keyboard as default, SHORTKEY };\n","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:toolbar');\n\n\nclass Toolbar extends Module {\n constructor(quill, options) {\n super(quill, options);\n if (Array.isArray(this.options.container)) {\n let container = document.createElement('div');\n addControls(container, this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n this.container = container;\n } else if (typeof this.options.container === 'string') {\n this.container = document.querySelector(this.options.container);\n } else {\n this.container = this.options.container;\n }\n if (!(this.container instanceof HTMLElement)) {\n return debug.error('Container required for toolbar', this.options);\n }\n this.container.classList.add('ql-toolbar');\n this.controls = [];\n this.handlers = {};\n Object.keys(this.options.handlers).forEach((format) => {\n this.addHandler(format, this.options.handlers[format]);\n });\n [].forEach.call(this.container.querySelectorAll('button, select'), (input) => {\n this.attach(input);\n });\n this.quill.on(Quill.events.EDITOR_CHANGE, (type, range) => {\n if (type === Quill.events.SELECTION_CHANGE) {\n this.update(range);\n }\n });\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n let [range, ] = this.quill.selection.getRange(); // quill.getSelection triggers update\n this.update(range);\n });\n }\n\n addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n\n attach(input) {\n let format = [].find.call(input.classList, (className) => {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (Parchment.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n let eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, (e) => {\n let value;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n let selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n this.quill.focus();\n let [range, ] = this.quill.selection.getRange();\n if (this.handlers[format] != null) {\n this.handlers[format].call(this, value);\n } else if (Parchment.query(format).prototype instanceof Parchment.Embed) {\n value = prompt(`Enter ${format}`);\n if (!value) return;\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ [format]: value })\n , Quill.sources.USER);\n } else {\n this.quill.format(format, value, Quill.sources.USER);\n }\n this.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n\n update(range) {\n let formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function(pair) {\n let [format, input] = pair;\n if (input.tagName === 'SELECT') {\n let option;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n let value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector(`option[value=\"${value}\"]`);\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n let isActive = formats[format] === input.getAttribute('value') ||\n (formats[format] != null && formats[format].toString() === input.getAttribute('value')) ||\n (formats[format] == null && !input.getAttribute('value'));\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n}\nToolbar.DEFAULTS = {};\n\n\nfunction addButton(container, format, value) {\n let input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function(controls) {\n let group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function(control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n let format = Object.keys(control)[0];\n let value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n let input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function() {\n let range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n let formats = this.quill.getFormat();\n Object.keys(formats).forEach((name) => {\n // Clean functionality in existing apps only clean inline formats\n if (Parchment.query(name, Parchment.Scope.INLINE) != null) {\n this.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, Quill.sources.USER);\n }\n },\n direction: function(value) {\n let align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', Quill.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, Quill.sources.USER);\n }\n this.quill.format('direction', value, Quill.sources.USER);\n },\n indent: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n let indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n let modifier = (value === '+1') ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, Quill.sources.USER);\n }\n },\n link: function(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, Quill.sources.USER);\n },\n list: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, Quill.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', Quill.sources.USER);\n }\n } else {\n this.quill.format('list', value, Quill.sources.USER);\n }\n }\n }\n}\n\n\nexport { Toolbar as default, addControls };\n","import Keyboard from '../modules/keyboard';\nimport DropdownIcon from '../assets/icons/dropdown.svg';\n\nlet optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nclass Picker {\n constructor(select) {\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', () => {\n this.togglePicker();\n });\n this.label.addEventListener('keydown', (event) => {\n switch(event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case Keyboard.keys.ENTER:\n this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case Keyboard.keys.ESCAPE:\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n\n buildItem(option) {\n let item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', () => {\n this.selectItem(item, true);\n });\n item.addEventListener('keydown', (event) => {\n switch(event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case Keyboard.keys.ENTER:\n this.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case Keyboard.keys.ESCAPE:\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n\n buildLabel() {\n let label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = DropdownIcon;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n\n buildOptions() {\n let options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = `ql-picker-options-${optionsCounter}`;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach((option) => {\n let item = this.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n this.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n\n buildPicker() {\n [].slice.call(this.select.attributes).forEach((item) => {\n this.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n\n escape() {\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(() => this.label.focus(), 1);\n }\n\n close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n\n selectItem(item, trigger = false) {\n let selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if (typeof Event === 'object') { // IE11\n let event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n\n update() {\n let option;\n if (this.select.selectedIndex > -1) {\n let item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n let isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n}\n\n\nexport default Picker;\n","import Picker from './picker';\n\n\nclass ColorPicker extends Picker {\n constructor(select, label) {\n super(select);\n this.label.innerHTML = label;\n this.container.classList.add('ql-color-picker');\n [].slice.call(this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function(item) {\n item.classList.add('ql-primary');\n });\n }\n\n buildItem(option) {\n let item = super.buildItem(option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n let colorLabel = this.label.querySelector('.ql-color-label');\n let value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n}\n\n\nexport default ColorPicker;\n","import Picker from './picker';\n\n\nclass IconPicker extends Picker {\n constructor(select, icons) {\n super(select);\n this.container.classList.add('ql-icon-picker');\n [].forEach.call(this.container.querySelectorAll('.ql-picker-item'), (item) => {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n this.defaultItem = this.container.querySelector('.ql-selected');\n this.selectItem(this.defaultItem);\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n}\n\n\nexport default IconPicker;\n","class Tooltip {\n constructor(quill, boundsContainer) {\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', () => {\n this.root.style.marginTop = (-1*this.quill.root.scrollTop) + 'px';\n });\n }\n this.hide();\n }\n\n hide() {\n this.root.classList.add('ql-hidden');\n }\n\n position(reference) {\n let left = reference.left + reference.width/2 - this.root.offsetWidth/2;\n // root.scrollTop should be 0 if scrollContainer !== root\n let top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n let containerBounds = this.boundsContainer.getBoundingClientRect();\n let rootBounds = this.root.getBoundingClientRect();\n let shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = (left + shift) + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n let height = rootBounds.bottom - rootBounds.top;\n let verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = (top - verticalShift) + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n\n show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n}\n\n\nexport default Tooltip;\n","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Emitter from '../core/emitter';\nimport Keyboard from '../modules/keyboard';\nimport Theme from '../core/theme';\nimport ColorPicker from '../ui/color-picker';\nimport IconPicker from '../ui/icon-picker';\nimport Picker from '../ui/picker';\nimport Tooltip from '../ui/tooltip';\n\n\nconst ALIGNS = [ false, 'center', 'right', 'justify' ];\n\nconst COLORS = [\n \"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\",\n \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\",\n \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\",\n \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\",\n \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"\n];\n\nconst FONTS = [ false, 'serif', 'monospace' ];\n\nconst HEADERS = [ '1', '2', '3', false ];\n\nconst SIZES = [ 'small', false, 'large', 'huge' ];\n\n\nclass BaseTheme extends Theme {\n constructor(quill, options) {\n super(quill, options);\n let listener = (e) => {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (this.tooltip != null && !this.tooltip.root.contains(e.target) &&\n document.activeElement !== this.tooltip.textbox && !this.quill.hasFocus()) {\n this.tooltip.hide();\n }\n if (this.pickers != null) {\n this.pickers.forEach(function(picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n }\n\n addModule(name) {\n let module = super.addModule(name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n\n buildButtons(buttons, icons) {\n buttons.forEach((button) => {\n let className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach((name) => {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n let value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n\n buildPickers(selects, icons) {\n this.pickers = selects.map((select) => {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new IconPicker(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n let format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new ColorPicker(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new Picker(select);\n }\n });\n let update = () => {\n this.pickers.forEach(function(picker) {\n picker.update();\n });\n };\n this.quill.on(Emitter.events.EDITOR_CHANGE, update);\n }\n}\nBaseTheme.DEFAULTS = extend(true, {}, Theme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function() {\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', () => {\n if (fileInput.files != null && fileInput.files[0] != null) {\n let reader = new FileReader();\n reader.onload = (e) => {\n let range = this.quill.getSelection(true);\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ image: e.target.result })\n , Emitter.sources.USER);\n this.quill.setSelection(range.index + 1, Emitter.sources.SILENT);\n fileInput.value = \"\";\n }\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\n\nclass BaseTooltip extends Tooltip {\n constructor(quill, boundsContainer) {\n super(quill, boundsContainer);\n this.textbox = this.root.querySelector('input[type=\"text\"]');\n this.listen();\n }\n\n listen() {\n this.textbox.addEventListener('keydown', (event) => {\n if (Keyboard.match(event, 'enter')) {\n this.save();\n event.preventDefault();\n } else if (Keyboard.match(event, 'escape')) {\n this.cancel();\n event.preventDefault();\n }\n });\n }\n\n cancel() {\n this.hide();\n }\n\n edit(mode = 'link', preview = null) {\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(`data-${mode}`) || '');\n this.root.setAttribute('data-mode', mode);\n }\n\n restoreFocus() {\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n\n save() {\n let value = this.textbox.value;\n switch(this.root.getAttribute('data-mode')) {\n case 'link': {\n let scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, Emitter.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, Emitter.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video': {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula': {\n if (!value) break;\n let range = this.quill.getSelection(true);\n if (range != null) {\n let index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, Emitter.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', Emitter.sources.USER);\n }\n this.quill.setSelection(index + 2, Emitter.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n}\n\n\nfunction extractVideoUrl(url) {\n let match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) ||\n url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) { // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values, defaultValue = false) {\n values.forEach(function(value) {\n let option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\n\nexport { BaseTooltip, BaseTheme as default };\n","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport LinkBlot from '../formats/link';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n [{ header: ['1', '2', '3', false] }],\n ['bold', 'italic', 'underline', 'link'],\n [{ list: 'ordered' }, { list: 'bullet' }],\n ['clean']\n];\n\nclass SnowTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-snow');\n }\n\n extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function(range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n}\nSnowTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (value) {\n let range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n let preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n let tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\n\nclass SnowTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.preview = this.root.querySelector('a.ql-preview');\n }\n\n listen() {\n super.listen();\n this.root.querySelector('a.ql-action').addEventListener('click', (event) => {\n if (this.root.classList.contains('ql-editing')) {\n this.save();\n } else {\n this.edit('link', this.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', (event) => {\n if (this.linkRange != null) {\n let range = this.linkRange;\n this.restoreFocus();\n this.quill.formatText(range, 'link', false, Emitter.sources.USER);\n delete this.linkRange;\n }\n event.preventDefault();\n this.hide();\n });\n this.quill.on(Emitter.events.SELECTION_CHANGE, (range, oldRange, source) => {\n if (range == null) return;\n if (range.length === 0 && source === Emitter.sources.USER) {\n let [link, offset] = this.quill.scroll.descendant(LinkBlot, range.index);\n if (link != null) {\n this.linkRange = new Range(range.index - offset, link.length());\n let preview = LinkBlot.formats(link.domNode);\n this.preview.textContent = preview;\n this.preview.setAttribute('href', preview);\n this.show();\n this.position(this.quill.getBounds(this.linkRange));\n return;\n }\n } else {\n delete this.linkRange;\n }\n this.hide();\n });\n }\n\n show() {\n super.show();\n this.root.removeAttribute('data-mode');\n }\n}\nSnowTooltip.TEMPLATE = [\n '',\n '',\n '',\n ''\n].join('');\n\n\nexport default SnowTheme;\n","module.exports = {\n 'align': {\n '' : require('../assets/icons/align-left.svg'),\n 'center' : require('../assets/icons/align-center.svg'),\n 'right' : require('../assets/icons/align-right.svg'),\n 'justify' : require('../assets/icons/align-justify.svg')\n },\n 'background': require('../assets/icons/background.svg'),\n 'blockquote': require('../assets/icons/blockquote.svg'),\n 'bold' : require('../assets/icons/bold.svg'),\n 'clean' : require('../assets/icons/clean.svg'),\n 'code' : require('../assets/icons/code.svg'),\n 'code-block': require('../assets/icons/code.svg'),\n 'color' : require('../assets/icons/color.svg'),\n 'direction' : {\n '' : require('../assets/icons/direction-ltr.svg'),\n 'rtl' : require('../assets/icons/direction-rtl.svg')\n },\n 'float': {\n 'center' : require('../assets/icons/float-center.svg'),\n 'full' : require('../assets/icons/float-full.svg'),\n 'left' : require('../assets/icons/float-left.svg'),\n 'right' : require('../assets/icons/float-right.svg')\n },\n 'formula' : require('../assets/icons/formula.svg'),\n 'header': {\n '1' : require('../assets/icons/header.svg'),\n '2' : require('../assets/icons/header-2.svg')\n },\n 'italic' : require('../assets/icons/italic.svg'),\n 'image' : require('../assets/icons/image.svg'),\n 'indent': {\n '+1' : require('../assets/icons/indent.svg'),\n '-1' : require('../assets/icons/outdent.svg')\n },\n 'link' : require('../assets/icons/link.svg'),\n 'list': {\n 'ordered' : require('../assets/icons/list-ordered.svg'),\n 'bullet' : require('../assets/icons/list-bullet.svg'),\n 'check' : require('../assets/icons/list-check.svg')\n },\n 'script': {\n 'sub' : require('../assets/icons/subscript.svg'),\n 'super' : require('../assets/icons/superscript.svg'),\n },\n 'strike' : require('../assets/icons/strike.svg'),\n 'underline' : require('../assets/icons/underline.svg'),\n 'video' : require('../assets/icons/video.svg')\n};\n","'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& typeof RegExp.prototype.dotAll === 'boolean'\n\t\t\t&& typeof RegExp.prototype.hasIndices === 'boolean'\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar defineProperty = Object.defineProperty;\nvar TypeErr = TypeError;\nvar getProto = Object.getPrototypeOf;\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new TypeErr('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @typedef {(...args: unknown[]) => unknown} Func */\n\n/** @type {(fn: T, length: number, loose?: boolean) => T} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\""],"names":["GetIntrinsic","callBind","$indexOf","module","exports","name","allowMissing","intrinsic","bind","setFunctionLength","$TypeError","$apply","$call","$reflectApply","call","$defineProperty","$max","originalFunction","func","arguments","length","applyBind","value","apply","clone","_instanceof","obj","type","nativeMap","nativeSet","nativePromise","Map","_","Set","Promise","parent","circular","depth","prototype","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","Infinity","_clone","child","proto","resolve","reject","then","err","__isArray","__isRegExp","RegExp","source","__getRegExpFlags","lastIndex","__isDate","Date","getTime","isBuffer","allocUnsafe","copy","Error","Object","create","getPrototypeOf","index","indexOf","push","i","forEach","key","keyChild","valueChild","set","entryChild","add","attrs","getOwnPropertyDescriptor","getOwnPropertySymbols","symbols","symbol","descriptor","enumerable","defineProperty","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","o","toString","re","flags","global","ignoreCase","multiline","clonePrototype","c","objectKeys","isArguments","is","isRegex","isDate","deepEqual","actual","expected","options","opts","strict","a","b","isUndefinedOrNull","aIsRegex","bIsRegex","aIsBuffer","bIsBuffer","ka","kb","e","sort","objEquiv","undefined","x","slice","$SyntaxError","gopd","property","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","writable","keys","hasSymbols","Symbol","toStr","concat","Array","defineDataProperty","supportsDescriptors","object","predicate","fn","defineProperties","map","predicates","props","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","has","hasOwnProperty","prefix","Events","EE","context","once","this","EventEmitter","_events","_eventsCount","__proto__","eventNames","events","names","listeners","event","exists","evt","available","l","ee","emit","a1","a2","a3","a4","a5","args","len","removeListener","j","on","listener","removeAllListeners","off","addListener","setMaxListeners","prefixed","hasOwn","gOPD","isArray","arr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","constructor","setProperty","target","newValue","getProperty","extend","src","copyIsArray","deep","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","longtext","shorttext","hm","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","Math","floor","best_common","prefixLength","suffixLength","text1_a","text1_b","text2_a","text2_b","hm1","ceil","hm2","mid_common","diff_halfMatch_","diffs_a","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","delta","front","k1start","k1end","k2start","k2end","d","k1","k1_offset","y1","x1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","diff_bisect_","diff_compute_","unshift","diff_cleanupMerge","norm","current_pos","next_pos","split_pos","d_left","d_right","splice","cursor_normalize_diff","ndiffs","cursor_pointer","d_next","merge_tuples","suffix","fix_cursor","compact","starts_with_pair_end","str","charCodeAt","ends_with_pair_start","fixed_diffs","fix_emoji","y","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","min","pointermid","pointerstart","pointerend","pointer","count_delete","count_insert","text_delete","text_insert","pop","changes","diff","start","left_d","right_d","INSERT","DELETE","EQUAL","max","concatty","that","bound","arrLike","offset","slicy","boundLength","boundArgs","Function","joiner","joiny","result","Empty","implementation","functionsHaveNames","functionsHaveConfigurableNames","$bind","boundFunctionsHaveNames","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","hasProto","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","iterator","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","isNaN","JSON","Number","parseFloat","parseInt","Proxy","Reflect","SharedArrayBuffer","String","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","error","errorProto","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","replace","$strSlice","$exec","exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","parts","string","first","last","match","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","hasPropertyDescriptors","hasArrayLengthDefineBug","test","foo","$Object","origSymbol","hasSymbolSham","sym","symObj","syms","propertyIsEnumerable","toStringTag","$hasOwn","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","getDay","tryDateObject","isRegexMarker","badStringifier","throwRegexMarker","valueOf","toPrimitive","numberIsNaN","define","getPolyfill","shim","polyfill","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","window","k","isObject","isFunction","isString","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","factory","self","modules","installedModules","moduleId","m","getter","n","__esModule","p","s","__webpack_require__","extendStatics","__extends","setPrototypeOf","__","ParchmentError","_super","message","_this","Scope","attributes","classes","tags","types","query","scope","ANY","Text","Node","TEXT_NODE","LEVEL","BLOCK","INLINE","HTMLElement","getAttribute","split","tagName","TYPE","DATA_KEY","input","BlotClass","node","find","bubble","blot","parentNode","register","Definitions","_i","Definition","blotName","attrName","keyName","className","toUpperCase","tag","Registry","Attributor","attributeBit","ATTRIBUTE","whitelist","item","canAdd","setAttribute","BLOT","remove","removeAttribute","default","linked_list_1","shadow_1","ContainerBlot","domNode","build","appendChild","other","insertBefore","attach","children","childNodes","reverse","makeBlot","head","deleteAt","forEachAt","descendant","criteria","_a","descendants","MAX_VALUE","lengthLeft","detach","formatAt","insertAt","def","childBlot","refBlot","statics","allowedChildren","some","insertInto","reduce","memo","moveChildren","targetParent","refNode","optimize","defaultChild","path","inclusive","position","removeChild","force","next","after","unwrap","update","mutations","addedNodes","removedNodes","mutation","document","body","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","filter","DOCUMENT_POSITION_FOLLOWING","nextSibling","replaceChild","attributor_1","store_1","container_1","FormatBlot","formats","toLowerCase","format","attribute","replaceWith","values","replacement","wrap","wrapper","move","LeafBlot","INLINE_BLOT","ShadowBlot","createElement","classList","scroll","cloneNode","isolate","parent_1","ref","parentBlot","refDomNode","root","class_1","style_1","AttributorStore","styles","attr","ClassAttributor","join","camelize","rest","StyleAttributor","trim","style","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","Parchment","Container","Format","Leaf","Embed","Scroll","Block","Inline","Attribute","Class","Style","Store","LinkedList","tail","append","nodes","contains","cur","prev","curNode","ret","length_1","callback","startNode","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","ScrollBlot","observer","MutationObserver","observe","disconnect","records","takeRecords","mark","markParent","remaining","previousSibling","grandChild","BLOCK_BLOT","InlineBlot","obj1","obj2","prop","isEqual","BlockBlot","navigator","userAgent","EmbedBlot","TextBlot","text","createTextNode","data","splitText","equal","op","NULL_CHARACTER","fromCharCode","Delta","ops","insert","newOp","retain","lastOp","chop","partition","passed","failed","initial","changeLength","elem","delete","end","iter","hasNext","nextOp","compose","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","thisOp","otherOp","strings","diffResult","component","opLength","eachLine","newline","line","transform","priority","transformPosition","nextType","lib","keepNull","Iterator","retOp","substr","BlockEmbed","super","BLOCK_ATTRIBUTE","endsWith","block","cache","leaf","bubbleFormats","lines","shift","Break","Cursor","selection","textNode","CONTENTS","_length","restore","composing","restoreText","range","getNativeRange","lastChild","startOffset","endNode","endOffset","compare","selfIndex","order","otherIndex","GUARD_TEXT","contentNode","childNode","leftGuard","rightGuard","prevLength","isLine","config","emitter","addEventListener","enable","batchStart","batch","batchEnd","newlineIndex","enabled","embed","getLines","SCROLL_OPTIMIZE","sources","USER","SCROLL_BEFORE_UPDATE","SCROLL_UPDATE","BackgroundStyle","FontStyleAttributor","FontStyle","SizeStyle","debug","logger","DOM_KEY","CLIPBOARD_CONFIG","computeStyle","whiteSpace","startsWith","replacer","collapse","matchNewline","deltaEndsWith","ELEMENT_NODE","applyFormat","matchSpacing","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","fontStyle","italic","fontWeight","bold","textIndent","indent","matchAlias","Clipboard","quill","onPaste","container","addContainer","matchers","selector","matcher","matchVisual","addMatcher","convert","html","innerHTML","getFormat","savedRange","innerText","elementMatchers","textMatchers","prepareMatching","traverse","log","dangerouslyPasteHTML","API","setContents","setSelection","SILENT","paste","updateContents","defaultPrevented","isEnabled","getSelection","scrollTop","scrollingContainer","focus","setTimeout","pair","querySelectorAll","nodeType","getComputedStyle","endText","display","childrenDelta","nextElementSibling","nodeHeight","offsetHeight","marginTop","marginBottom","offsetTop","DEFAULTS","History","lastRecorded","ignoreChange","clear","EDITOR_CHANGE","eventName","oldDelta","TEXT_CHANGE","userOnly","record","keyboard","addBinding","shortKey","undo","shiftKey","redo","platform","change","dest","stack","deleteLength","changeIndex","endsWithNewlineChange","getLastChangeIndex","cutoff","changeDelta","undoDelta","getContents","timestamp","now","delay","maxStack","__quill","handleDOM","Emitter","handler","listenDOM","SELECTION_CHANGE","levels","level","method","console","namespace","ns","newLevel","Module","toggle","_toggle","DOMTokenList","token","searchString","subjectString","list","thisArg","execCommand","ASCII","combineFormats","combined","merged","getDelta","applyDelta","consumeNextNewline","scrollLength","image","bullet","normalizeDelta","deleteText","formatLine","lengthRemaining","lineLength","codeIndex","codeLength","formatText","leaves","formatsArr","blots","getText","insertEmbed","insertText","isBlank","removeFormat","cursorIndex","textBlot","oldValue","oldText","newText","Quill","limit","import","imports","overwrite","warn","userConfig","clipboard","history","theme","themeConfig","moduleConfig","moduleClass","toolbar","querySelector","expandConfig","editor","addModule","init","lastRange","modify","contents","placeholder","readOnly","disable","blur","setRange","overload","scrollIntoView","getBounds","bounds","containerBounds","getBoundingClientRect","bottom","top","height","left","right","width","getLength","getIndex","getLeaf","getLine","getModule","getRange","hasFocus","pasteHTML","deleted","applied","setText","modifier","shiftRange","pos","version","QUILL_VERSION","Range","Selection","mouseDown","cursor","handleComposition","handleDragging","native","setNativeRange","ignored","nativeRange","collapsed","createRange","setStart","setEnd","rect","side","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","activeElement","positions","indexes","startContainer","endContainer","rangeToNative","scrollBounds","removeAllRanges","addRange","oldRange","Theme","themes","AlignAttribute","AlignClass","AlignStyle","Bold","Code","CodeBlock","textContent","frag","nextNewline","prevNewline","isolateLength","searchIndex","lastIndexOf","TAB","ColorAttributor","ColorClass","ColorStyle","DirectionAttribute","DirectionClass","DirectionStyle","Header","Italic","Link","sanitize","url","protocols","anchor","href","protocol","PROTOCOL_WHITELIST","SANITIZED_URL","Strike","Underline","SHORTKEY","Keyboard","binding","normalize","which","keyCode","bindings","ENTER","handleEnter","metaKey","ctrlKey","altKey","BACKSPACE","handleBackspace","handleDelete","handleDeleteRange","listen","leafStart","offsetStart","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","every","preventDefault","makeEmbedArrowHandler","where","LEFT","RIGHT","curFormats","prevFormats","nextLength","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","scrollIndex","makeFormatHandler","ESCAPE","UP","DOWN","header","Toolbar","groups","controls","group","control","addButton","option","addSelect","addControls","handlers","addHandler","selectedIndex","selected","hasAttribute","prompt","isActive","clean","direction","align","link","optionsCounter","toggleAriaAttribute","element","select","buildPicker","label","togglePicker","escape","buildItem","tabIndex","selectItem","buildLabel","buildOptions","id","close","trigger","Event","dispatchEvent","createEvent","initEvent","backgroundColor","colorLabel","stroke","fill","icons","defaultItem","boundsContainer","TEMPLATE","hide","reference","offsetWidth","rootBounds","verticalShift","show","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","removeEventListener","tooltip","textbox","pickers","picker","extendToolbar","buildButtons","buttons","button","buildPickers","selects","fillSelect","formula","edit","fileInput","files","reader","FileReader","onload","readAsDataURL","click","video","BaseTooltip","save","cancel","mode","preview","restoreFocus","linkRange","extractVideoUrl","defaultValue","TOOLBAR_CONFIG","SnowTheme","SnowTooltip","setFunctionName","hasIndices","dotAll","unicode","unicodeSets","sticky","flagsBound","calls","TypeErr","regex","hasDescriptors","$floor","functionLengthIsConfigurable","functionLengthIsWritable"],"sourceRoot":""}